温馨提示×

Debian message日志如何轮转

小樊
33
2026-07-26 23:09:39
栏目: 智能运维

在 Debian 系统中,/var/log/messages 日志的轮转由 rsyslog + logrotate 共同完成。下面分情况说明。


一、Debian 默认情况(rsyslog + logrotate)

1. 日志来源

Debian 使用 rsyslog 作为系统日志服务,默认会把部分日志写入:

/var/log/messages

(有些版本可能默认不启用,需要确认 rsyslog 配置)

2. 轮转机制

日志轮转由 logrotate 管理,而不是 rsyslog 自己。

logrotate 的配置文件通常在:

/etc/logrotate.conf
/etc/logrotate.d/

3. messages 的轮转配置

/var/log/messages 通常由以下文件控制:

/etc/logrotate.d/rsyslog

典型内容示例:

/var/log/messages
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
    endscript
}

4. 轮转规则说明

  • rotate 7:保留 7 个历史文件
  • daily:每天轮转一次
  • compress:压缩旧日志(.gz
  • delaycompress:延迟一轮再压缩
  • postrotate:轮转后通知 rsyslog 重新打开日志文件

轮转后的文件示例:

/var/log/messages
/var/log/messages.1
/var/log/messages.2.gz
/var/log/messages.3.gz

二、手动测试轮转是否生效

1. 查看 logrotate 是否包含 messages

grep messages /etc/logrotate.d/*

2. 手动执行一次轮转(测试)

logrotate -vf /etc/logrotate.d/rsyslog

3. 查看结果

ls -lh /var/log/messages*

三、如果 /var/log/messages 不存在

在某些 Debian 版本中,默认 没有 messages 文件,而是使用:

/var/log/syslog

原因:

  • rsyslog 配置 (/etc/rsyslog.conf) 可能未包含 *.messages

如果确实需要 messages 日志,可以修改 rsyslog 配置:

sudo nano /etc/rsyslog.d/50-default.conf

添加:

*.info;mail.none;authpriv.none;cron.none    /var/log/messages

然后重启:

sudo systemctl restart rsyslog

四、常见问题

1. 轮转后日志不继续写入?

原因:rsyslog 没有重新打开文件
解决:确保 postrotate 脚本存在且可执行

/usr/lib/rsyslog/rsyslog-rotate

2. 日志太大怎么办?

可以调整:

  • rotate 数量
  • size 条件(如 size 100M
  • daily / weekly

示例:

size 100M
rotate 5

五、总结

✅ Debian 中 /var/log/messages 的轮转由 logrotate 管理
✅ 配置文件一般在 /etc/logrotate.d/rsyslog
✅ 轮转后通过 postrotate 通知 rsyslog
✅ 若文件不存在,需要检查 rsyslog 配置

如果你愿意,我可以帮你 检查当前 Debian 版本的具体配置,或者帮你写一个 自定义 messages 轮转规则

0