【发布时间】:2014-04-07 06:46:05
【问题描述】:
在强制运行logrotate 后,我的应用程序一直写入my_app.log.1(应该稍后存档的旧日志)而不是my_app.log。
这使my_app.log 成为一个空文件,因此logrotate 运行时没有任何影响。 my_app.log.1 不断增长到千兆字节。
我正在运行 Ubuntu 12.04。我的应用程序是使用 pm2 的 Node.js 应用程序。以下是我的 logrotate 配置:
"/var/log/my_app/*.log" {
daily
size 50M
rotate 10
missingok
compress
delaycompress
notifempty
}
我知道我把notifempty 放在那里,但为什么首先要写入my_app.log.1?
【问题讨论】:
-
如果应用程序在运行时保持日志文件打开,它不受文件名更改的影响。它继续写入文件。
logrotate可以配置(在postrotate脚本中)以在重命名文件后重新启动应用程序(或发送HUP信号,如果应用程序响应它)。文档中有示例。