CentOS 上 syslog(或 rsyslog/systemd-journald)日志“丢失”是很常见的问题,通常不是真的没产生,而是被过滤、覆盖、轮转或存储机制导致看不到。下面按最常见原因逐个说明,并给出排查方法。
CentOS 7+ 一般有两套:
/var/log/messages、/var/log/secure 等journalctl 查看很多“syslog 丢失”其实是:
/var/log/messages没内容- 或
journalctl查不到旧日志
rsyslog 配置可能丢弃了某些日志。
检查:
vim /etc/rsyslog.conf
vim /etc/rsyslog.d/*.conf
常见问题:
*.none 规则stop 导致后续不写示例(错误写法):
*.* stop
✅ 解决:确认没有被 stop 或 none 屏蔽
CentOS 默认每天轮转:
/var/log/messages
/var/log/secure
可能原因:
messages-20240101.gz)rotate 0 直接删了检查:
ls -lh /var/log/
cat /etc/logrotate.d/syslog
✅ 如果你只看了 messages 而没看 messages-* 就会以为“丢了”
systemd-journald 默认不是永久保存
查看配置:
cat /etc/systemd/journald.conf
关键参数:
Storage=auto
SystemMaxUse=10%
SystemKeepFree=15%
MaxRetentionSec=
如果:
Storage=volatile → 重启就没查看当前:
journalctl --disk-usage
✅ 解决(永久保存):
Storage=persistent
然后:
mkdir -p /var/log/journal
systemctl restart systemd-journald
rsyslog 在磁盘满时不会报错,直接丢
检查:
df -h
如果 /var 100%:
✅ 清空间 / 增大分区
systemctl status rsyslog
journalctl -u rsyslog
常见问题:
stop✅ 修复配置后:
systemctl restart rsyslog
很多程序:
stdout例如:
/var/log/nginx✅ 检查应用配置是否启用了 syslog
# 1. 服务是否在
systemctl status rsyslog
systemctl status systemd-journald
# 2. 磁盘
df -h
# 3. 日志文件
ls -lh /var/log/
# 4. journal 是否持久
cat /etc/systemd/journald.conf | grep Storage
# 5. 实时看日志
tail -f /var/log/messages
journalctl -f
你可以补充:
cat /etc/redhat-release)我可以直接帮你定位配置问题。