系统环境:ubuntu11.04+apache2
使用apache自带的rotatelog进行日志切割,可将日志的文件名以年月日时分秒保存,如2011-10-21_14_20_00,设置如下:
首先在apache2的目录下有个sites-enabled文件夹,里面有个000-default文件,在该文件夹中加入一下内容:
CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/access_log/access_log.%Y-%m_%d-%H_%M_%S 300 +480 " combined
ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/error_log/%Y%m%d 600 400M"
rotatelogs说明:
rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ]
rotationtime指的是设定多少秒后进行日志切割,如这里的300秒,在设定的时间之后系统将自动切割日志;
offset指的是日志时间的偏移量,如果不设置该偏移量,则默认为0,且显示的时间与北京时间会不一样,与北京时间相差8个小时,故建议将其设置为+480,单位为分钟;
filesizeM指的是日志多大之后自动切割,可接受的单位为K,M,G,上面的ErrorLog设置为400M之后自动切割日志。
我的000-default设置如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
# ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
# CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/access_log/access_log.%Y-%m_%d-%H_%M_%S 300 +480 " combined
ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/error_log/%Y%m%d 600 400M"
</VirtualHost>