Debian 下 syslog 不记录,通常不是“syslog 坏了”,而是由谁来记录、往哪记录、记录条件这几个环节出问题了。下面按最常见原因 → 排查步骤来系统说明(适用于 Debian 10/11/12,rsyslog 最常见)。
| 系统 | 默认 |
|---|---|
| Debian 10/11 | rsyslog |
| Debian 12 | rsyslog 或 systemd-journald |
| 容器 / 最小化 | 可能 没有 syslog 服务 |
dpkg -l | grep rsyslog
如果没有:
sudo apt install rsyslog
sudo systemctl enable --now rsyslog
systemctl status rsyslog
✅ 必须是 active (running)
如果没启动:
sudo systemctl start rsyslog
⚠️ 注意:
rsyslog 没运行 = 完全不记录 syslog
/var/log/syslog 为空journalctl 能看到日志systemd-journald 默认不转发给 rsyslog
journalctl -xe
如果这里有日志,但 /var/log/syslog 没有,说明是 journald 没转发
编辑:
sudo nano /etc/systemd/journald.conf
确保:
ForwardToSyslog=yes
然后:
sudo systemctl restart systemd-journald
sudo systemctl restart rsyslog
✅ 这是 Debian 12 最常见原因
cat /etc/rsyslog.conf
确认没有:
*.* ~
或
*.* stop
(会直接丢弃日志)
/etc/rsyslog.d/*.conf有些配置会覆盖规则
ls /etc/rsyslog.d/
例如:
*.* /dev/null
或
*.info /var/log/messages
至少要有:
*.* /var/log/syslog
或:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none /var/log/syslog
ls -l /var/log/syslog
没有就创建:
sudo touch /var/log/syslog
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
然后重启 rsyslog:
sudo systemctl restart rsyslog
df -h
磁盘满 → syslog 直接停止写入
journalctl -u 服务名
✅ 这些日志 不会进 /var/log/syslog
dmesg | grep rsyslog
或:
aa-status
✅ rsyslog 已安装
✅ rsyslog 正在运行
✅ ForwardToSyslog=yes
✅ /var/log/syslog 存在且权限正确
✅ 磁盘没满
✅ rsyslog 配置没有被 stop / discard
module(load="imuxsock")
module(load="imjournal")
*.* /var/log/syslog
然后:
sudo systemctl restart rsyslog
logger "test syslog"
cat /var/log/syslog
你可以直接贴出:
cat /etc/debian_version
/etc/rsyslog.conf/var/log/syslog 是否存在systemctl status rsyslog我可以 直接帮你定位是哪一条原因。