在 CentOS 上 syslog 不写日志 通常是因为服务没起来、配置改错、或被其它日志系统(如 systemd-journald)接管了。下面按最常见原因逐步排查。
CentOS 不同版本默认不同:
rsyslog(或 syslog)rsyslog + systemd-journaldps -ef | grep -E 'rsyslog|syslog'
如果没有 rsyslogd 进程,说明服务没运行。
systemctl status rsyslog
若未运行:
systemctl start rsyslog
systemctl enable rsyslog
rsyslogd -N1
或查看错误:
journalctl -xe | grep rsyslog
常见错误:
.conf例如 /var/log 权限异常:
ls -ld /var/log
修复示例:
chown root:root /var/log
chmod 755 /var/log
如果自定义日志文件:
touch /var/log/my.log
chown syslog:adm /var/log/my.log
CentOS 7 以后:
查看:
journalctl -xe
如果你想让 rsyslog 从 journal 取日志:
# /etc/rsyslog.conf
module(load="imjournal")
然后重启:
systemctl restart rsyslog
检查:
grep -R "*.info" /etc/rsyslog.conf /etc/rsyslog.d/
错误示例(不写文件):
*.* /dev/null
df -h
df -i
磁盘满时 syslog 会直接停止写。
ausearch -m avc -ts recent
临时验证:
setenforce 0
systemctl status rsyslog
rsyslogd -N1
ls -l /var/log
df -h
journalctl -u rsyslog
请告诉我:
cat /etc/redhat-release)/var/log/messages?自定义?)systemctl status rsyslog 输出/etc/rsyslog.conf我可以直接帮你定位是哪一条导致的。