方案
让log按照日期来存储
ErrorLog "|bin/rotatelogs.exe -l logs/discuz.dev.error.%Y.%m.%d.%H_%M_%S.log 5M" |
其中86400是指86400秒,正好是1天,表示按照1天的间隔来存储日志
5M是指当错误日志容量大于5M时, 新建一个日志文件来存储
rotatelogs.exe的参数l是指使用本地时间代替GMT时间作为时间基准, 避免记录的时间有错误
过滤不必要的日志
日志中一般没有必要记录静态的资源文件请求,比如图片、js、css等,将这些请求过滤后能大幅减少日志记录行数
首先要保证一个叫setenvif的mod已经安装并enable,然后在VirtualHost的配置文件中添加<FilesMatch "\.(png|gif|jpe?g|js|css|swf)$">
SetEnv dontlog 1
</FilesMatch>
其作用是过滤静态的资源文件请求,dontlog表示一个变量,将这些过滤器的信息存储在这个变量中,最后在CustomLog行尾添加env=!dontlog,如CustomLog "|bin/rotatelogs.exe -l logs/discuz.dev.access.%Y.%m.%d.log 86400" common env=!dontlog
自定义日志内容
CustomLog "|bin/rotatelogs.exe -l logs/intra.access.%Y.%m.%d.log 86400" "%h %t %V \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=!dontlog |
%h ip
%t 时间
%V 访问的域名
\”%r\” 访问的方法,路径
%>s 状态码
%b 返回给客户端的字节数
\”%{Referer}i\” 访问来源
\”%{User-agent}i\” user-agent