现在,logrotate将旧的日志文件重命名为access.log.1.gz,access.log.2.gz等。我更喜欢将它命名为access.log.20090714.gz,access.log.20090715.gz,等 – 每一天一个。
我找不到为旧的日志文件指定文件名模式的任何选项。 你知道如何做到这一点?
顺便说一句,这是为了旋转lighttpd日志文件,如果这件事。
在/etc/logrotate.conf或者/etc/logrotate.d/lighttpd ,或者是其他地方的正确文件,将dateext添加到要应用date后缀的节中。
更多信息从logrotate手册页 :
dateext
存档旧版本的日志文件,添加像YYYYMMDD这样的日常扩展,而不是简单地添加一个数字。
使用cronolog – 它将写在日志文件中正确的文件名(例如,我通常有我的networking服务器写日志文件为YYYY / MM / DD /访问,或YYYY / MM / DD /错误,等等)。 有关使用lighttpdconfigurationcronolog的更多详细信息,请访问: http : //redmine.lighttpd.net/projects/1/wiki/MigratingFromApache
(虽然该页面提到server.errorlog不能通过cronolog运行,似乎有一个错误报告,这已被标记为“固定” – 不幸的是,我不能发布一次以上的URL,因为我是serverfault上的“新”用户…)
我不认为lighttpd或logrotate可以自己做到这一点。 我看到两个select来实现这一点:
在logrotate之后直接做自己的脚本,就像cronjob的末尾一样。 就像是:
if [ -f /var/log/lighttpd/access.log.1.gz ]; then` mv /var/log/lighttpd/access.log.1.gz /var/log/lighttpd/access.log.$date.gz fi
或者,syslog-ng可以按date构build日志文件,lighttpd可以将日志发送到syslog而不是自己写入。
# syslog-ng.conf destination df_lighttpd { file("/var/log/lighttpd/$YEAR$MONTH$DAY.log"); }; filter f_lighttpd { program("lighttpd"); }; log { source(s_all); filter(f_lighttpd); destination(df_lighttpd); };
并在lighttpd conf中设置accesslog.use-syslog & server.errorlog-use-syslog 。
编辑: Cronolog是比我的build议更简单和/或者,如果它适用于你,我会去。