在 Debian 系统中,/var/log/syslog 为空(或不存在、不更新)通常由以下几种常见原因导致。你可以按顺序排查:
systemd-journald,未启用 rsyslogDebian 新版默认由 systemd-journald 管理日志,而不是传统的 syslog。
syslog 文件通常由 rsyslog 或 syslog-ng 生成/var/log/syslog 就不会有内容检查:
ls -l /var/log/syslog
systemctl status rsyslog
解决:
sudo apt install rsyslog
sudo systemctl enable --now rsyslog
即使安装了 rsyslog,也可能未启动。
systemctl status rsyslog
journalctl -u rsyslog
若未运行:
sudo systemctl start rsyslog
systemd 默认只把日志写入 journal,不转发给 syslog。
查看 journal 日志:
journalctl
如果你只看到 journal 有日志,而 syslog 为空,说明 rsyslog 没收到数据。
确认 rsyslog 配置:
grep -R "imuxsock\|ModLoad" /etc/rsyslog.conf
通常应有:
module(load="imuxsock")
logrotate 可能:
检查:
ls -l /var/log/ | grep syslog
cat /etc/logrotate.d/rsyslog
rsyslog 无法写入:
ls -l /var/log/syslog
ps aux | grep rsyslog
确保属主为 syslog:adm
现代 Debian 推荐使用:
journalctl -xe
journalctl -u nginx
| 现象 | 原因 |
|---|---|
/var/log/syslog 不存在 |
没装 rsyslog |
| 文件存在但为空 | rsyslog 没启动 |
| journal 有日志,syslog 无 | systemd 未转发 |
| 突然变空 | logrotate / 磁盘满 |
如果你愿意,可以贴出:
systemctl status rsyslog
ls -l /var/log/syslog
cat /etc/rsyslog.conf | head -30
我可以帮你精确判断。