在 Debian 系统中,syslog 通常指 rsyslog(Debian 默认的系统日志服务)。下面从排查思路、常用命令、配置调试、日志定位、常见问题几个方面说明如何“调试 syslog”。
Debian 10+ 默认使用 rsyslog:
systemctl status rsyslog
如果没有运行:
systemctl start rsyslog
systemctl enable rsyslog
查看日志服务本身是否正常:
journalctl -u rsyslog -e
rsyslogd -dn
-d:debug-n:前台运行(不 daemon 化)输出会直接打印到终端,方便看:
按 Ctrl+C 退出。
编辑:
vim /etc/rsyslog.conf
加入:
$DebugLevel 2
然后重启:
systemctl restart rsyslog
查看调试日志:
tail -f /var/log/syslog
⚠️ 调试完记得关闭,否则日志量巨大。
logger "this is a test message"
查看:
tail -f /var/log/syslog
或指定 facility:
logger -p local0.info "test local0"
rsyslogd -N1
输出示例:
rsyslogd: version 8.x.x, config validation run
rsyslogd: End of config validation run
有错误会明确指出行号。
检查:
/etc/rsyslog.conf 是否有写规则*.* 过滤错误示例:
*.* /var/log/all.log
确认:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
防火墙:
ufw allow 514/udp
ufw allow 514/tcp
查看监听:
ss -lunp | grep 514
常见于:
*.* stop
用 debug 模式能看到:
msg discarded
| 文件 | 说明 |
|---|---|
/var/log/syslog |
系统日志 |
/var/log/messages |
部分发行版 |
/var/log/auth.log |
认证日志 |
/etc/rsyslog.conf |
主配置 |
/etc/rsyslog.d/ |
子配置 |
journald 收集日志rsyslog 从 journald 读或直接从内核读如果你发现 syslog 为空:
journalctl
确认 journal 是否正常。
systemctl status rsyslog
rsyslogd -N1
rsyslogd -dn
logger test
tail -f /var/log/syslog
如果你有 具体场景(比如:远程收不到、Docker 日志、某个服务不写日志),可以告诉我,我可以给你更针对性的调试方法。