强制运行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
首先写入?{/ p>
答案 0 :(得分:24)
我终于想出了如何解决这个问题。
这是因为日志文件是由pm2
编写的。 logrotate
已将其名称更改为my_app.log.1
并创建了新的my_app.log
文件,但pm2
并不关心此问题并继续写信至my_app.log.1
。
我通过notifempty
替换copytruncate
选项然后重新启动pm2
来解决问题。修复后,可以添加notifempty
,但我并不需要它。
有关详细信息,请参阅logrotate
reference。希望这能帮助其他人解决类似问题。