封尘网

让学习成为一种习惯!

Nginx和Apache日志的轮询

Nginx和Apache日志的轮询

通过系统自动轮询日志有效的切割日志,同时有利于备份日志和分析日志。

Nginx轮询:

 /data/logs/nginx/access.log {
        daily
        rotate 15
        minsize 10M
        missingok
        notifempty
        compress
        sharedscripts
        postrotate
        /usr/local/nginx-1.8.0/sbin/nginx -s reload

上面生新加载配置文件也可以写成:

[ ! -f /usr/local/nginx-1.8.0/logs/nginx.pid ] || kill -USR1 `cat /usr/local/nginx-1.8.0/logs/nginx.pid`
endscript

效果如下:

-rw-r--r-- 1 root root      0 Dec 11 00:24 access.log
-rw-r--r-- 1 root root    204 Dec 11 00:24 access.log.1.gz
-rw-r--r-- 1 root root    211 Dec 11 00:23 access.log.2.gz
-rw-r--r-- 1 root root    211 Dec 11 00:23 access.log.3.gz
-rw-r--r-- 1 root root    229 Dec 11 00:21 access.log.4.gz
-rw-r--r-- 1 root root    202 Dec 11 00:20 access.log.5.gz
-rw-r--r-- 1 root root    437 Dec 11 00:20 access.log.6.gz
-rw-r--r-- 1 root root    369 Dec 11 00:20 access.log.7.gz
-rw-r--r-- 1 root root    332 Dec 11 00:18 access.log.8.gz

注释:

  • /var/log/nginx/*log:需要轮询日志路径
  • daily:每天轮询
  • ate 15:保留最多15次滚动的日志
  • singok:如果日志丢失,不报错继续滚动下一个日志
  • ifempty:当日志为空时不进行滚动
  • compress:旧日志默认用gzip压缩
  • /usr/local/nginx-1.8.0/logs/nginx.pid:nginx主进程pid 和下面的命令一样效果。
  • /usr/local/nginx-1.8.0/sbin/nginx -s reload 重新加载时会新生成日志文件access.log

Apache日志轮询:

/usr/local/apache/logs/*_log {
        daily
        rotate 15
        minsize 10M
        missingok
        notifempty
        compress
        sharedscripts
        postrotate
        /usr/local/apache/bin/apachectl > /dev/null 2>/dev/null || true
endscript

个人在测试过程中手动执行命令效果不错,但是通过手动更改时间来测试时,发现轮询有延时。

提醒:本文最后更新于 1293 天前,文中所描述的信息可能已发生改变,请谨慎使用。