日志刷屏本质是低优先级日志无差别输出,解决需分级控制、精准过滤与合理轮转;应先确认来源与级别,再用journalctl抑制、调整rsyslog或应用级别、临时过滤及logrotate归档。

日志刷屏本质是大量低优先级(如 debug 或 info)日志被无差别输出,挤占终端或文件空间。解决核心不是“关掉日志”,而是分级控制 + 精准过滤 + 合理轮转。
确认日志来源与级别
先判断刷屏的是哪类日志:
- 如果是
journalctl实时输出(如journalctl -f),说明是 systemd-journald 收集的系统/服务日志; - 如果是
/var/log/messages、/var/log/syslog或应用自定义日志文件持续增长,需查清是 rsyslogd 转发的,还是程序直写文件; - 注意日志行开头常带级别标识,如
INFO、DEBUG、ERR、error—— 这是过滤的关键依据。
用 journalctl 快速抑制刷屏
systemd 系统推荐优先使用 journalctl 控制输出:
- 只看错误及以上:
journalctl -p err..alert -f(显示err、warning、crit、alert、emerg); - 排除 debug/info:
journalctl -p warning..emerg -f(跳过 info/debug); - 限定服务范围:
journalctl -u nginx.service -p err -f,避免全局刷屏; - 加时间限制防历史堆积:
journalctl --since "10 minutes ago" -p err -f。
调整 rsyslog 或应用日志级别
若刷屏来自 rsyslog 管理的日志(如 /var/log/messages):
- 编辑
/etc/rsyslog.conf或/etc/rsyslog.d/*.conf,找到对应 facility 的规则行,例如:*.* /var/log/messages→ 改为*.warning /var/log/messages(只记录 warning 及以上); - 重启生效:
sudo systemctl restart rsyslog; - 对自研 C++/Python 应用,检查是否启用了
DEBUG模式;关闭方式通常是改环境变量(如LOG_LEVEL=WARNING)或配置文件中的 level 字段。
临时过滤与长期归档
不修改配置也能快速应对:
- 实时查看时用
grep -v屏蔽干扰项:tail -f /var/log/app.log | grep -v "DEBUG\|INFO"; - 配合
awk提取关键字段:tail -f /var/log/auth.log | awk '$5 ~ /failed|invalid/ {print}'; - 启用
logrotate防止单个文件无限膨胀:
在/etc/logrotate.d/myapp中添加:/var/log/myapp.log { daily rotate 7 compress missingok notifempty }。










