Linux 日志记录不全是一个常见但原因多样的问题,通常不是“系统故意不记”,而是配置、资源、权限或机制本身限制导致的。下面按常见原因分类说明,并给出排查方向。
很多 Linux 仍使用 rsyslog:
systemctl status rsyslog
如果停止或卡死,日志会丢失。
表现:
/var/log/messages 不更新解决:
systemctl restart rsyslog
journalctl -u rsyslog
使用 systemd 的系统有两套日志:
journald(二进制)rsyslog(文本)如果没配置转发:
# /etc/rsyslog.conf
module(load="imjournal")
否则:
journalctl 有/var/log/* 没有/etc/systemd/journald.conf
常见限制:
SystemMaxUse=500M
MaxRetentionSec=2week
结果:
查看:
journalctl --disk-usage
服务或内核可能只记录 warning 以上:
cat /proc/sys/kernel/printk
/etc/ssh/sshd_config
LogLevel INFO
结果:
df -h
日志写不进去时:
ls -l /var/log
如果权限不对:
容器、Python、Java 常见:
docker logs xxx
而不是 /var/log
解决:
进程在 logging 初始化前就退出:
/etc/logrotate.d/
可能:
ausearch -m AVC
# 1. 服务状态
systemctl status rsyslog
systemctl status systemd-journald
# 2. 磁盘
df -h
# 3. journal 是否有
journalctl -xe
# 4. 日志配置
cat /etc/rsyslog.conf
cat /etc/systemd/journald.conf
# 5. 服务自身日志配置
Linux 日志“不全”,大多不是 bug,而是被限制、被分流、被清理或没接好。
如果你愿意,可以告诉我:
我可以给你针对性配置示例。