在 Ubuntu 里,syslog 本身的大小限制通常不是由 syslog 直接控制,而是由 日志轮转(logrotate) 或你使用的 syslog 实现(rsyslog / syslog-ng / journald) 来管理的。下面按常见情况说清楚。
Ubuntu 默认用 rsyslog 写日志,日志文件如:
/var/log/syslog
logrotate 配置文件一般在:
/etc/logrotate.d/rsyslog
示例(限定 syslog 大小):
/var/log/syslog
{
size 50M
rotate 4
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
说明:
size 50M:日志超过 50M 就轮转rotate 4:最多保留 4 个旧日志compress:压缩旧日志让配置立刻生效(测试):
logrotate -d /etc/logrotate.d/rsyslog # 模拟
logrotate -f /etc/logrotate.d/rsyslog # 强制执行
Ubuntu 也常用 journalctl 日志系统。
编辑:
/etc/systemd/journald.conf
常用参数:
SystemMaxUse=500M
SystemKeepFree=100M
SystemMaxFileSize=50M
MaxRetentionSec=2week
然后重启:
systemctl restart systemd-journald
查看当前限制:
journalctl --disk-usage
rsyslog 也可以限制单文件大小(需要模块):
module(load="imfile")
但一般不建议,用 logrotate 更简单稳定。
| 场景 | 建议 |
|---|---|
限制 /var/log/syslog |
改 logrotate.d/rsyslog |
限制 journalctl 日志 |
改 journald.conf |
| 不想写太大 | 两者都限制 |
如果你愿意,可以告诉我:
rsyslog 还是 journald我可以直接给你一份可直接用的配置。