Linux 下 syslog 不输出是一个常见但原因很多的问题。下面按最常见原因 → 排查方法 → 解决思路给你系统梳理一下。
Linux 里“syslog”可能指:
不同情况原因不同。
ps aux | grep -E 'rsyslog|syslog-ng'
或(systemd):
systemctl status rsyslog
✅ 解决:
systemctl start rsyslog
systemctl enable rsyslog
在 systemd 系统(CentOS 7+/Ubuntu 16+):
/var/log/messagesjournalctl查看:
journalctl -f
✅ 如果你只看了 /var/log/messages,那是“正常现象”
检查:
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
常见坑:
*.* stop
或:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
✅ 临时测试:
*.* /var/log/test.log
然后:
systemctl restart rsyslog
logger "test message"
cat /var/log/test.log
例如:
syslog(LOG_ERR, "error");
但配置里:
*.info /var/log/messages
➡ LOG_ERR 会显示
➡ 如果是 LOG_DEBUG 而没开 debug,就不会输出
查看:
logger -p local0.info "hello"
/var/log 不可写检查:
ls -l /dev/log
容器里常见:
# 没有 /dev/log
✅ 解决(容器):
-v /dev/log:/dev/log
getenforce
ausearch -m AVC -ts recent
✅ 临时验证:
setenforce 0
ls -l /var/log/messages
lsof | grep messages
✅ 重启 rsyslog 可恢复:
systemctl restart rsyslog
systemctl status rsyslog
journalctl -f
logger "test"
cat /var/log/messages
ls -l /dev/log
你可以告诉我:
我可以直接帮你定位到具体配置行。