方法一:使用 rotatelogs 每隔一天记录一个日志
rotatelogs 是 Apache 2.2 中自带的管道日志程序,参数如下(bin文件夹下);语法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
选项
-l(注意这个是L,而不是一,可以不写)
使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。
logfile
它加上基准名就是日志文件名。如果logfile中包含”%”,则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单位的”.nnnnnnnnnn”后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime
日志文件滚动的以秒为单位的间隔时间。
offset
相对于UTC的时差的分钟数。如果省略,则假定为”0″并使用UTC时间。比如,要指定UTC时差为”-5小时”的地区的当地时间,则此参数应为”-300″。
filesizeM
指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。
编辑配置文件httpd.conf
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b \ "%{Referer}i\" \"%{User-Agent}i\"" common 定义日志格式,写完整在日志中才能显示完整的日志信息
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common
</IfModule>
虚拟主机配置
<VirtualHost *:80>
ServerName www.demo.com
DocumentRoot "D:/tomcat6/webapps/demo"
CustomLog "|D:/apache/bin/rotatelogs D:/apache/logs/demo_access_%Y%m%d.log 86400 480" common
ErrorLog "|D:/apache/bin/rotatelogs D:/apache/logs/demo_error_%Y%m%d.log 86400 480"
</VirtualHost>
方法二:使用 cronolog 为每一天建立一个新的日志
从 http://cronolog.org/download/ 可以下载 cronolog 程序,把下载到的 cronolog 程序并放到 Apache 的 bin 目录下(详细参数参见:http://cronolog.org/usage.html)
虚拟主机配置文件中的使用方法
ServerAdmin webmaster@localhost
DocumentRoot "E:/htdocs"
ServerName localhost
ErrorLog "|bin/cronolog logs/localhost/error_%Y%m%d.log"
CustomLog "|bin/cronolog logs/localhost/access_%Y%m%d.log" combined
注意:使用 cronolog 时如果日志是放在某个不存在的路径则会自动创建目录,而使用 rotatelogs 时不能自动创建,这一点要特别注意。