温馨提示×

debian syslog怎样调试

小樊
38
2026-09-14 19:18:41
栏目: 智能运维

在 Debian 系统中,syslog 通常指 rsyslog(Debian 默认的系统日志服务)。下面从排查思路、常用命令、配置调试、日志定位、常见问题几个方面说明如何“调试 syslog”。


一、确认 syslog 服务状态

Debian 10+ 默认使用 rsyslog:

systemctl status rsyslog

如果没有运行:

systemctl start rsyslog
systemctl enable rsyslog

查看日志服务本身是否正常:

journalctl -u rsyslog -e

二、开启 rsyslog 调试模式(非常重要)

方法 1:命令行调试(推荐)

rsyslogd -dn
  • -d:debug
  • -n:前台运行(不 daemon 化)

输出会直接打印到终端,方便看:

  • 规则是否匹配
  • 消息被丢弃还是写入

按 Ctrl+C 退出。


方法 2:修改配置文件开启 debug

编辑:

vim /etc/rsyslog.conf

加入:

$DebugLevel 2

然后重启:

systemctl restart rsyslog

查看调试日志:

tail -f /var/log/syslog

⚠️ 调试完记得关闭,否则日志量巨大。


三、验证 syslog 是否接收日志

手动发送测试日志

logger "this is a test message"

查看:

tail -f /var/log/syslog

或指定 facility:

logger -p local0.info "test local0"

四、检查 rsyslog 配置是否正确

测试配置文件语法

rsyslogd -N1

输出示例:

rsyslogd: version 8.x.x, config validation run
rsyslogd: End of config validation run

有错误会明确指出行号。


五、常见调试场景

1️⃣ 日志没写进去

检查:

  • /etc/rsyslog.conf 是否有写规则
  • 文件权限是否正确
  • 是否使用了 *.* 过滤错误

示例:

*.* /var/log/all.log

2️⃣ 远程 syslog 不收

确认:

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

3️⃣ 日志被丢弃(discard)

常见于:

*.* stop

用 debug 模式能看到:

msg discarded

六、关键日志文件位置

文件 说明
/var/log/syslog 系统日志
/var/log/messages 部分发行版
/var/log/auth.log 认证日志
/etc/rsyslog.conf 主配置
/etc/rsyslog.d/ 子配置

七、systemd 与 syslog 关系(容易混淆)

  • journald 收集日志
  • rsyslog 从 journald 读或直接从内核读

如果你发现 syslog 为空:

journalctl

确认 journal 是否正常。


八、快速调试 checklist ✅

systemctl status rsyslog
rsyslogd -N1
rsyslogd -dn
logger test
tail -f /var/log/syslog

如果你有 具体场景(比如:远程收不到、Docker 日志、某个服务不写日志),可以告诉我,我可以给你更针对性的调试方法。

0 踩