访问日志不记录指定文件类型 、 访问日志切割 、静态元素过期时间

一:访问日志不记录指定文件类型

#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
在对应的虚拟主机配置文件中加入
相关配置为:
SetEnvIf Request_URI "..gif$" image-request
SetEnvIf Request_URI ".
.jpg$" image-request
SetEnvIf Request_URI "..png$" image-request
SetEnvIf Request_URI ".
.bmp$" image-request
SetEnvIf Request_URI "..swf$" image-request
SetEnvIf Request_URI ".
.js$" image-request
SetEnvIf RequestURI ".*.css$" image-request
CustomLog "|/usr/local/apache/bin/rotatelogs -l
/usr/local/apache/logs/oem.discuz.qq.com-access
%Y%m%d.log 86400" combined
env=!image-request
说明:在原来日志配置的基础上,增加了一些image-request的定义,比如把 gif、jpg、
bmp、swf、js、css等结尾的全标记为 image-request,然后在配置日志的时后加一个标记
env=!image-request,这里有个叹号,表示取反,这样就可以把这些忽略了。

二:访问日志切割

#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
在对应的虚拟主机配置文件中加入
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/aaa-error%Y%m%d.log
86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l
/usr/local/apache2/logs/aaa-access
%Y%m%d.log 86400" combined
说明:上面是两行,注意不要写成多于两行。ErrorLog是错误日志,CustomLog 是访问
日志。最前面的那个竖线其实就是管道符,意思是把产生的日志交给rotatelogs这个工具,
而这个工具就是apache 自带的切割日志的工具。-l的作用是校准时区为UTC,也就是北京
时间。最后面的86400,单位是秒,所以正好是一天,那么日志会每天切割一次。而最后面
的combined为日志格式,关于日志格式在/usr/local/apcahe2/conf/httpd.conf里面定义。
#grep LogFormat /usr/local/apache2/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O"
combinedio

apache的日志是可以自动切割的。
方法一: 使用 cronolog 为每一天建立一个新的日志
CustomLog "|bin/cronolog logs/access%Y%m%d.log" combined
也可以按小时
CustomLog "|bin/cronolog logs/access
%Y%m%d%h.log" combined
方法二:使用 rotatelogs 每一天记录一个日志
CustomLog "|bin/rotatelogs -l logs/access%Y%m%d.log 86400" combined
每小时
CustomLog "|bin/rotatelogs -l logs/access
%Y%m%d%H.log 3600" combined

再看apache rotatelogs语法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
选项-l使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。所以一定要加上-l 否则出现的日志时间和实际时间是相差8小时的。
logfile它加上基准名就是日志文件名。如果logfile中包含”%”,则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单位的”.nnnnnnnnnn”后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime日志文件滚动的以秒为单位的间隔时间。
offset相对于UTC的时差的分钟数。如果省略,则假定为”0″并使用UTC时间。比如,要指定UTC时差为”-5小时”的地区的当地时间,则此参数应为”-300″。
filesizeM指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。

三:静态元素过期时间

这里的静态文件指的是图片、js、css等文件,用户访问一个站点,其实大多数元素都
是图片、js、css等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的
就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些
静态文件总不能一直缓存,它总有一些时效性,那么这节我们讲的就是这个过期时间。配置
如下:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
或者使用mod_headers 模块实现
<ifmodule mod_headers.c>
#htm,html,txt类的文件缓存一个小时
<filesmatch ".(html|htm|txt)$">
header set cache-control "max-age=3600"
</filesmatch>
#css, js, swf类的文件缓存一个星期
<filesmatch ".(css|js|swf)$">
header set cache-control "max-age=604800"
</filesmatch>
#jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年
<filesmatch ".(ico|gif|jpg|jpeg|png|flv|pdf)$">
header set cache-control "max-age=29030400"
</filesmatch>
</ifmodule>
说明:这里的时间单位可以 days、hours甚至是 min,两种不同的方法,上面使用的是
mod_expires,而下面用的是 mod_headers,要想使用这些模块,必须要事先已经支持。如何
查看是否支持,使用命令:
#/usr/local/apache2/bin/apachectl -M
如果没有模块
再检查/usr/local/apache2/modules 目录里有没有那个模块 如果有再去编辑配置文件,增加一行该模块相关的配置

原文地址:http://blog.51cto.com/10941098/2154288

时间: 2024-08-04 09:54:23

访问日志不记录指定文件类型 、 访问日志切割 、静态元素过期时间的相关文章

nginx不记录指定文件类型的日志

1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; 其中dd是指日志格式的名字,可修改.2.在虚拟主机配置文件中,指

LAMP--Apache 不记录指定文件类型的日志

如果一个站点的访问量特别大,那么访问日志就会很多,但有一些访问日志我们其实是可以忽略的,比如网站的一些图片,还有 js,css 等静态对象.而这些文件的访问往往是巨量的,记录这些日志也没什么用,那就可以忽略掉这些访问的日志了. 相关配置是在虚拟主机配置文件中加入以下语句: [[email protected] ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf     SetEnvIf Request_URI ".*\.gif$&quo

httpd之不记录指定文件类型的日志

在访问量很大的站点,有些访问的日志可以不记录,如图片js,css 方法一: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Refere

Nginx 不记录指定文件类型的日志

查看主配置文件: [[email protected] vhosts]# vim ../nginx.conf 在配置文件里: log_format    combined_realip   '$remote_addr $http_x_forwarded_for   [$time_local]' (日志格式)   (日志名字)           (两个IP,一个自己的IP,一个代理IP)     (时间) '$host           "$request_uri"        

apache 不记录指定文件类型的日志

如何不把图片等文件的信息记录到日志中,应该如何做? 1.打开虚拟主机配置文件,里面添加一些内容 vi /usr/local/apache2/conf/extra/httpd-vhosts.conf SetEnvIf Request_URI ".*\.gifs$" image-request SetEnvIf Request_URI ".*\.jpg$" image-request SetEnvIf Request_URI ".*\.png$" i

Apache 配置不记录指定文件类型的日志

[[email protected] ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/www" ServerName www.test.com SetEnvIf Request_URI ".*\.gif$" image-request SetEnvIf Request_URI ".*\.jpg$"

2.1-Apache不记录指定文件类型日志

在apache访问日志中,默认会记录所有动作.包括本地一些静态小图片,从而日志变得繁多臃肿. 这时我们可以指定,不记录指定文件类型的日志,来达到只记录我们想要的日志. 配置步骤: 1:标记指定文件类型 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/src/Discuz" ServerName www.llzdwyp.com ServerAlias www.wyp.com S

apache日志切割与不记录指定文件类型日志

1.# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 修改日志文件为: ErrorLog "logs/test.com-error_log"       错误日志 CustomLog "logs/test.com-access_log" combined  访问日志  相对路径 Apache的common日志格式定义: # vim /usr/local/apache2/conf/httpd.conf <

访问日志不记录静态文件、访问日志切割、静态元素过期时间

访问日志不记录静态文件 当访问很多图片,文档等静态资源的时候,会加大你日志的容量,日志容量占用你磁盘空间后,会出现服务器宕机等很严重的问题,这时需要将日志进行配置优化.当访问网页时不记录这些图片.css.js等信息日志. 1.[[email protected] 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/11