强制运行 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
?
最佳答案
我终于想出了解决问题的方法。
这是因为日志文件是由 pm2
写入的。 logrotate
将其名称更改为 my_app.log.1
并创建了新的 my_app.log
文件,但是 pm2
没有关心这个并不断写入 my_app.log.1
。
我通过将 notifempty
选项替换为 copytruncate
解决了这个问题,然后重新启动了 pm2
。修复后,notifempty
可以添加回来,但我并不真的需要它。
参见 logrotate
reference了解更多信息。希望这能帮助其他遇到类似问题的人。
关于ubuntu - 应用程序在运行 logrotate 后写入 ".log.1"文件而不是 ".log"文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22193874/