apache日志轮转

时间:2023-11-25 19:40:32
apache默认的日志配置为:
    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" common
这样所有的错误日志和访问日志内容均分别保存在error_log和access_log文件中,时间一长,日志文件的内容就会变的非常大。一般情况下,我们希望将日志按一定的时间段或文件大小存成不同的文件。如每天存一个日志文件。
此功能可通过LINUX的logrotate实现,但它有一个缺点,执行文件轮转时(即创建新文件后)可能需要通过脚本重启服务以实现将日志内容记录到新的日志文件中。
apache提供了一个命令:rotatelogs(位于apache的bin目录下),可以完美的实现日志的轮转功能。
rotatelogs的语法可通过 rotatelogs -h查看。
以下通过3个例子说明其常用用法:
ErrorLog "|/usr/app/httpd-2.4.2/bin/rotatelogs  /usr/app/httpd-2.4.2/logs/error_log.%Y-%m-%d 86400 480"
每天生成一个错误日志文件。
其中"/usr/app/httpd-2.4.2/bin/rotatelogs 为rotatelogs的绝对路径,看很多例子用相对路径bin/rotatelogs,我试了不行。记得路径前有“|”。日志文件/usr/app/httpd-2.4.2/logs/error_log.%Y-%m-%d最好用绝对路径,在我的测试中,有些可以用相对路径,但有些不行,会导致apache启动失败。
logs/error_log.%Y-%m-%d 为日志文件的格式,实际为:error_log.2012-10-23
86400为日志生成的时间间隔,即每隔86400秒生成一个新的日志,当然如果这段时间没有任何错误产生,不会生成新的日志文件。
480为时间差,以分钟为单位。文件的时间为美国时间,中国的时差要比美国多8个小时也就是480分钟,所以要加上480分钟。如果不加,那日志记录的时间就会比实际服务器时间晚480分钟。
CustomLog "|/usr/app/httpd-2.4.2/bin/rotatelogs /usr/app/httpd-2.4.2/logs/access_log.%Y-%m-%d.%H:%M:%S 180 480" common
每180秒生成一个access日志文件,文件名形如:access_log.2012-10-24.23:42:00
ErrorLog "|/usr/app/httpd-2.4.2/bin/rotatelogs  /usr/app/httpd-2.4.2/logs/errorlog.%Y-%m-%d-%H_%M_%S 2M +480"
当日志文件达到2M后生成新的日志文件,支持的单位为K,M,G
转载自:http://www.360doc.com/content/12/1024/23/10866842_243598545.shtml