18

强制运行后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写入?

4

1 回答 1

30

我终于想出了如何解决这个问题。

这是因为日志文件是由pm2. logrotate将其名称更改为my_app.log.1并创建了新my_app.log文件,但pm2并不关心这一点并继续写入my_app.log.1.

我通过替换notifempty选项copytruncate然后重新启动解决了这个问题pm2。修复后,notifempty可以加回来,但我真的不需要它。

有关详细信息,请参阅logrotate参考资料。希望这将帮助其他人遇到类似的问题。

于 2014-03-06T09:28:51.703 回答