简单的Nginx日志分割脚本

大家都知道,Nginx默认是将所有的请求、错误日志都打印在同一个access.log、error.log文件中。

而tomcat的话,可以配置cronolog来做分割;而apache默认是配置好日志分割的。nginx如何实现日志文件按时间来打印?下面的脚本可以轻松简单地实现效果。

[[email protected] logs]# more ../cronolog.sh

#!/bin/bash
date=$(date +%Y%m%d)
directory="/usr/local/nginx/logs/"
mv ${directory}access.log     ${directory}access-${date}.log
mv ${directory}error.log      ${directory}error-${date}.log
#/usr/local/nginx/nginx -s reload
kill -HUP `cat ${directory}nginx.pid`

再配合计划任务crond,在晚上23点59分的时候就执行脚本。
[[email protected] logs]# crontab -l

59    23    *    *    *    bash /usr/local/nginx/cronolog.sh

别忘了crond服务要启动。


有一个不好的地方,就是crond定时器的最小单位只能设定到分钟级,无法设定到秒级。上面的脚本中,如果网站持续有请求访问,在23点59分01秒之后,到23点59分59秒的当天日志,都被打印到了第二天的access.log里去了。所以如果要看当天最后1分钟的访问日志信息,还得查看第二天的日志文件中最前面一部分的数据。

然而这并不是什么大问题。

nginx-log.png

标签: Nginx, log

添加新评论