Plainnotes

Logs that never rotate: two usual causes

2026-08-29 · 2 min readSystems

/var/log/app.log reached tens of gigabytes despite a rule in logrotate.d. Run it by hand first:

logrotate -d /etc/logrotate.d/app

The dry run prints which configs it read and why it skipped them. Two common outcomes.

The file lives in a subdirectory that /etc/logrotate.conf never includes, so the rule is invisible.

Or rotation happens and the process keeps writing to the old inode, because it opened the file once and still holds the descriptor:

postrotate
    systemctl reload app >/dev/null 2>&1 || true
endscript

copytruncate works too, but loses whatever is written between copy and truncate. Not a good trade for busy services.