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