每月轮换nginx日志文件最简单的方法是什么?

时间:2013-03-03 07:09:18

标签: nginx openbsd logrotate log-rotation

在OpenBSD中,端口中没有logrotate,而newsyslog似乎只有大量日志文件每月轮换的功能有限。

我有很多域名,大量的nginx日志文件名称,如/var/www/logs/*/*.{access,error}.log

我在想一个小的shell脚本和cronjob。每月轮换它们最简单的方法是什么,并将前一个月附加到文件名?

2 个答案:

答案 0 :(得分:2)

我认为以下crontab应该可以工作:

0   0   1   *   *   /etc/nginx/logrotate.monthly.sh

其中/etc/nginx/logrotate.monthly.sh应具有以下内容:

find /var/www/logs/ -name "*log" -exec \
mv -i {} {}.`sh -c 'date -r $(expr $(date +%s) - 1209600) +%Y-%m'` \; ; \
kill -USR1 `cat /var/run/nginx.pid`

-i的{​​{1}}选项对于确保文件不会被覆盖非常重要。我们通过两周前的今天日​​期(根据«tcsh: print date 2 weeks ago in shell»)获取文件名的日期。

答案 1 :(得分:0)

请同时查看此misc@ thread

(同时请记住FAQ中记录的关于私有apache的警告以及移动时需要一个小时间窗口。)