温馨提示×

ubuntu syslog如何分割

小樊
46
2026-07-05 18:29:02
栏目: 智能运维

在 Ubuntu 中,**syslog 的分割(轮转)**通常由 rsyslog + logrotate 共同完成。下面按常见场景说明。


一、Ubuntu 中 syslog 是如何被分割的

1️⃣ rsyslog:负责“写日志”

  • 配置文件:/etc/rsyslog.conf/etc/rsyslog.d/*.conf
  • 默认日志路径:
    • /var/log/syslog
    • /var/log/messages(部分版本)

2️⃣ logrotate:负责“分割、压缩、删除”

  • 配置文件:
    • /etc/logrotate.conf
    • /etc/logrotate.d/rsyslog最关键

二、查看 syslog 的 logrotate 规则

cat /etc/logrotate.d/rsyslog

常见内容示例(Ubuntu 20.04/22.04):

/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 压缩旧日志
delaycompress 延迟一次压缩
postrotate 轮转后重启 rsyslog
missingok 日志不存在也不报错

三、syslog 分割后的文件示例

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

四、手动触发 syslog 分割(测试用)

sudo logrotate -f /etc/logrotate.d/rsyslog

查看结果:

ls -lh /var/log/syslog*

五、修改 syslog 分割策略(常见需求)

✅ 改成每小时 / 每周 / 每月

hourly
# daily
# weekly
# monthly

✅ 保留更多历史日志

rotate 30

✅ 不压缩

# compress

✅ 按大小轮转(例如 100MB)

size 100M

⚠️ 注意sizedaily/hourly 同时存在时,size 优先级更高。


六、确认 logrotate 是否正常运行

sudo cat /var/lib/logrotate/status

或查看 cron:

systemctl status cron

七、常见问题排查

❌ syslog 不轮转?

  1. 检查 cron 是否运行
  2. 检查 rsyslog 是否重新加载
  3. 查看 logrotate 日志:
grep logrotate /var/log/syslog

八、如果你用的是 systemd-journal(补充)

Ubuntu 也支持 journalctl

journalctl --disk-usage

限制大小:

sudo journalctl --vacuum-size=100M

或配置:

sudo nano /etc/systemd/journald.conf
SystemMaxUse=200M

总结

syslog 分割 = rsyslog 写 + logrotate 切
✅ 核心配置文件:/etc/logrotate.d/rsyslog
✅ 修改后无需重启,logrotate 会定时执行

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

  • Ubuntu 版本
  • 是否用 Docker / Kubernetes
  • 是否想按 大小 / 时间 / 服务 分割

我可以给你一份定制 logrotate 配置

0