应用程序在运行logrotate后写入“.log.1”文件而不是“.log”文件

时间:2014-03-05 09:40:10

标签: ubuntu logging logrotate

强制运行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>

1 个答案:

答案 0 :(得分:24)

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

这是因为日志文件是由pm2编写的。 logrotate已将其名称更改为my_app.log.1并创建了新的my_app.log文件,但pm2并不关心此问题并继续写信至my_app.log.1

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

有关详细信息,请参阅logrotate reference。希望这能帮助其他人解决类似问题。