温馨提示×

ubuntu syslog如何轮转

小樊
60
2026-07-05 18:16:59
栏目: 智能运维

在 Ubuntu 中,**syslog 轮转(log rotation)**通常由 rsyslog + logrotate 配合完成。下面分情况说明。


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

1. 相关文件

  • 日志文件/var/log/syslog
  • 轮转配置/etc/logrotate.d/rsyslog
  • logrotate 主配置/etc/logrotate.conf
  • rsyslog 配置/etc/rsyslog.conf/etc/rsyslog.d/*.conf

2. 查看 syslog 轮转规则

cat /etc/logrotate.d/rsyslog

常见内容示例:

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

含义说明:

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

3. 手动测试轮转

sudo logrotate -vf /etc/logrotate.d/rsyslog
  • -v:显示详细信息
  • -f:强制执行

执行后你会看到类似:

/var/log/syslog.1
/var/log/syslog.2.gz

二、systemd-journald(journalctl)日志轮转

如果你使用的是 systemd-journal(不是 /var/log/syslog),轮转方式不同。

1. 查看 journal 日志大小

journalctl --disk-usage

2. 配置 journal 自动轮转

编辑:

sudo nano /etc/systemd/journald.conf

关键参数:

[Journal]
SystemMaxUse=200M
SystemMaxFileSize=50M
MaxRetentionSec=1week

然后重启:

sudo systemctl restart systemd-journald

3. 手动清理 journal 日志

sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-time=7d

三、常见排错

1. syslog 不轮转

确认:

sudo systemctl status logrotate
sudo systemctl status rsyslog

2. 轮转后日志不写入

确保 postrotate 脚本存在:

ls /usr/lib/rsyslog/rsyslog-rotate

四、总结

日志类型 轮转方式
/var/log/syslog logrotate + rsyslog
journalctl systemd-journald.conf
自定义日志 /etc/logrotate.d/ 新建配置

如果你愿意,可以告诉我:

  • Ubuntu 版本(lsb_release -a
  • 使用的是 rsyslog 还是 systemd-journal
  • 是否想改轮转周期或大小

我可以帮你定制一份最合适的配置。

0