温馨提示×

为何debian日志没有记录

小樊
44
2026-09-03 23:48:19
栏目: 智能运维

Debian 系统“日志没有记录”一般不是日志功能完全坏掉,而是记录方式、位置或配置发生了变化。下面按常见原因逐一说明,你可以对照排查。


一、Debian 默认已改用 systemd-journald(不再是 /var/log/messages)

从 Debian 8 开始,默认日志系统主要是:

  • systemd-journald(二进制日志)
  • 传统 syslog(rsyslog / syslog-ng)可能没装或没启用

常见现象

  • /var/log/messages 不存在或为空
  • /var/log/syslog 没有内容
  • 但 journalctl 能看日志

检查方式

journalctl
journalctl -xe

如果有内容,说明日志在记录,只是不在传统文件里。


二、rsyslog 未安装或未启动(最常见)

很多用户以为 Debian 一定会写 /var/log/*,但其实:

  • 最小化安装 可能不装 rsyslog
  • 或 rsyslog 被禁用

检查 rsyslog 状态

systemctl status rsyslog

如果提示 not found 或 inactive:

# 安装
apt update
apt install rsyslog

# 启动
systemctl enable --now rsyslog

三、日志被 journald 限制(内存/磁盘)

journald 可配置为:

  • 只存内存
  • 重启后清空
  • 不写文件

查看配置

cat /etc/systemd/journald.conf

重点看:

Storage=auto

可选值:

  • volatile → 只存内存(重启清空)
  • persistent → 存磁盘(/var/log/journal)
  • auto → 有目录才存

建议

mkdir -p /var/log/journal
systemctl restart systemd-journald

四、磁盘满 / inode 满

日志写不进去,但系统不报错。

检查

df -h
df -i

如果 /var 或 / 满了:

  • 清理日志
  • 或扩容

五、日志级别被调高(不记录普通信息)

例如:

  • 只记录 warning/error
  • 把 info 过滤掉了

rsyslog 示例

*.info;mail.none;authpriv.none /var/log/messages

如果改成了:

*.err

那普通日志就不会写。


六、特定服务没开日志

有些服务:

  • 默认不写 syslog
  • 只在自己的日志目录
  • 或输出到 stdout(被 journald 接走)

例如:

  • nginx:/var/log/nginx/
  • docker:journalctl -u docker
  • cron:可能只进 journal

七、你看了“错误的日志文件”

Debian 常见日志位置:

日志 说明
/var/log/syslog rsyslog
/var/log/auth.log 登录/认证
/var/log/kern.log 内核
journalctl systemd

快速排查 checklist

# 1. 是否有 journal 日志
journalctl -n 50

# 2. rsyslog 是否在跑
systemctl status rsyslog

# 3. 磁盘是否满
df -h

# 4. journal 是否持久
ls /var/log/journal

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

  • Debian 版本(cat /etc/debian_version)
  • 你是看 哪个日志没记录
  • 是 系统日志 还是 某个服务日志

我可以直接帮你定位是哪一种情况。

0 踩