Приложение записывает файл ".log.1" вместо файла ".log" после запуска logrotate
После силового запуска logrotate
мое приложение продолжает писать my_app.log.1
(старый журнал, который должен быть заархивирован позже) вместо my_app.log
.
Это делает my_app.log
пустой файл, поэтому logrotate
работает без какого-либо эффекта. И my_app.log.1
продолжает расти до гигабайт.
Я запускаю Ubuntu 12.04. Мое приложение - это приложение Node.js, используя pm2. Ниже приведена моя конфигурация logrotate:
"/var/log/my_app/*.log" {
daily
size 50M
rotate 10
missingok
compress
delaycompress
notifempty
}
Я знаю, что я положил notifempty
туда, но почему my_app.log.1
записано в первую очередь?
Ответы
Ответ 1
Я наконец понял, как решить проблему.
Это связано с тем, что файл журнала записывался pm2
. logrotate
изменило свое имя на my_app.log.1
и создало новый файл my_app.log
, но pm2
не заботился об этом и продолжал писать в my_app.log.1
.
Я решил проблему, заменив опцию notifempty
на copytruncate
, а затем перезапустил pm2
. После фиксации notifempty
можно добавить назад, но мне это действительно не нужно.
Дополнительную информацию см. в logrotate
ссылка. Надеюсь, это поможет другим людям получить аналогичную проблему.