温馨提示×

ubuntu syslog为何不写日志

小樊
61
2026-09-14 06:06:10
栏目: 智能运维

在 Ubuntu 上 syslog 不写日志 通常有下面几类原因,按出现频率从高到低说明,并给出排查方法。


一、Ubuntu 实际用的是 rsyslog(不是 syslog)

Ubuntu 20.04 / 22.04 / 24.04 默认 不是传统的 syslogd,而是:

  • rsyslog
  • 或 systemd-journald

先确认服务状态:

systemctl status rsyslog
systemctl status systemd-journald

如果 rsyslog 没启动:

sudo systemctl enable --now rsyslog

二、rsyslog 服务没运行或崩溃

ps aux | grep rsyslog

如果没有进程:

sudo systemctl restart rsyslog
journalctl -u rsyslog -n 50

常见错误:

  • 配置文件语法错误
  • 磁盘满
  • /var/log 权限错误

三、日志被 systemd-journald “接管”了

现在很多程序只写 journal,不写 /var/log/syslog:

journalctl -xe

如果你发现:

  • journalctl 有日志
  • /var/log/syslog 没有

那是正常的(默认行为)

想让 rsyslog 也能收到:

sudo apt install rsyslog

并确保:

/etc/rsyslog.conf

中有:

module(load="imjournal")

四、/var/log 磁盘或权限问题(非常常见)

1️⃣ 磁盘满了

df -h /var

如果 100%:

sudo journalctl --vacuum-size=100M

2️⃣ inode 满了

df -i /var

3️⃣ 权限错误

ls -ld /var/log
ls -l /var/log/syslog

正常应为:

drwxr-xr-x root syslog
-rw-r----- syslog adm

修复:

sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog

五、rsyslog 配置关闭了写文件

检查:

grep -R "syslog" /etc/rsyslog.d/

确认有类似:

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

如果被注释掉,就不会写。


六、程序写的是 stdout / stderr(容器/服务常见)

如果是 systemd 服务:

StandardOutput=journal
StandardError=journal

那就不会进 syslog。


七、AppArmor / SELinux 限制

少见但存在:

sudo aa-status

八、快速自检清单 ✅

systemctl status rsyslog
df -h /var
ls -l /var/log/syslog
journalctl -u rsyslog

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • 是 完全没日志 还是 某程序没日志
  • /var/log/syslog 是否存在

我可以直接帮你定位到具体原因。

0 踩