Fix Broken Logrotate on Debian Systems Without rsyslog

Troubleshooting -- Last reviewed 2026-04-01 logging debian administration Found this useful? Upvote it. ×

The Problem

On Debian 12 (bookworm) systems running systemd/journald without rsyslog, stale logrotate configs that reference the syslog user or rsyslog-specific directives will cause ALL log rotation to fail, not just the broken config.

Logrotate treats any error as fatal for the entire run. One bad config file in /etc/logrotate.d/ can silently prevent rotation of every log on the system, leading to disk-filling log growth.

Symptoms

Diagnosis

# Test logrotate to find the offending config
sudo logrotate --debug /etc/logrotate.conf 2>&1 | grep -i error

# Check for configs referencing rsyslog-specific settings
grep -r 'syslog' /etc/logrotate.d/

# Check if rsyslog is even installed
dpkg -l rsyslog 2>/dev/null || echo "rsyslog not installed"

In our case, /etc/logrotate.d/rsyslog-custom was left behind by Ansible and contained:

/var/log/syslog
/var/log/mail.log
{
    rotate 7
    daily
    ...
    su root syslog
    ...
}

The su root syslog directive failed because the syslog user does not exist on systems without rsyslog.

Fix

# Remove the offending config
sudo rm /etc/logrotate.d/rsyslog-custom

# Force rotation to catch up on everything that was blocked
sudo logrotate --force /etc/logrotate.conf

# Verify it works cleanly now
sudo logrotate --debug /etc/logrotate.conf 2>&1 | tail -5

Prevention

When decommissioning rsyslog in favor of journald:

  1. Remove /etc/logrotate.d/rsyslog* configs
  2. Verify no other configs in /etc/logrotate.d/ reference the syslog user
  3. Run logrotate --debug to confirm clean operation

Key Takeaway

Logrotate is all-or-nothing per run. A single broken config in /etc/logrotate.d/ silently breaks rotation for every service on the system. After any system changes (removing packages, changing init systems), always verify logrotate still works.

User Notes

No notes yet. Be the first to contribute a tip or example.

Contribute a note

Share a tip, gotcha, or practical example. Keep it under 2000 characters. No questions (use the Asterisk community forums for support). Wrap code in backticks.

Moderated before publishing. Email never shown.

Related Snippets