温馨提示×

Debian syslog为何不记录

小樊
40
2026-07-07 20:35:33
栏目: 智能运维

Debian 下 syslog 不记录,通常不是“syslog 坏了”,而是由谁来记录、往哪记录、记录条件这几个环节出问题了。下面按最常见原因 → 排查步骤来系统说明(适用于 Debian 10/11/12,rsyslog 最常见)。


一、先搞清楚:Debian 用的是什么日志系统

系统 默认
Debian 10/11 rsyslog
Debian 12 rsyslog 或 systemd-journald
容器 / 最小化 可能 没有 syslog 服务

1️⃣ 检查是否安装了 rsyslog

dpkg -l | grep rsyslog

如果没有:

sudo apt install rsyslog
sudo systemctl enable --now rsyslog

二、rsyslog 服务是否真的在运行(最常见)

systemctl status rsyslog

✅ 必须是 active (running)

如果没启动:

sudo systemctl start rsyslog

⚠️ 注意:
rsyslog 没运行 = 完全不记录 syslog


三、日志被 systemd-journald 接管了(Debian 12 常见)

现象

  • /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 最常见原因


四、rsyslog 配置过滤掉了日志(非常常见)

1️⃣ 检查主配置

cat /etc/rsyslog.conf

确认没有:

*.*     ~

*.*     stop

(会直接丢弃日志)


2️⃣ 检查 /etc/rsyslog.d/*.conf

有些配置会覆盖规则

ls /etc/rsyslog.d/

例如:

*.*     /dev/null

*.info     /var/log/messages

3️⃣ 确保有 syslog 规则

至少要有:

*.*    /var/log/syslog

或:

auth,authpriv.*    /var/log/auth.log
*.*;auth,authpriv.none    /var/log/syslog

五、日志文件不存在或权限错误

1️⃣ 文件是否存在

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

2️⃣ 磁盘是否满(非常容易忽略)

df -h

磁盘满 → syslog 直接停止写入


六、程序根本没走 syslog(而是 stdout)

例如:

  • Docker 容器
  • systemd 服务
  • 某些 Python / Java 程序

排查

journalctl -u 服务名

✅ 这些日志 不会进 /var/log/syslog


七、AppArmor / SELinux 阻止(少见但存在)

dmesg | grep rsyslog

或:

aa-status

八、快速自检清单(90% 问题在这里)

✅ rsyslog 已安装
✅ rsyslog 正在运行
✅ ForwardToSyslog=yes
/var/log/syslog 存在且权限正确
✅ 磁盘没满
✅ rsyslog 配置没有被 stop / discard


九、最小可用 rsyslog 配置(可替换测试)

module(load="imuxsock")
module(load="imjournal")

*.*    /var/log/syslog

然后:

sudo systemctl restart rsyslog
logger "test syslog"
cat /var/log/syslog

十、如果你愿意,我可以进一步帮你

你可以直接贴出:

  1. Debian 版本
    cat /etc/debian_version
    
  2. 是否使用 systemd
  3. /etc/rsyslog.conf
  4. /var/log/syslog 是否存在
  5. systemctl status rsyslog

我可以 直接帮你定位是哪一条原因

0