最稳妥高效的做法是在 /etc/rsyslog.d/ 下新建规则文件,用 if-then-stop 或 :msg, contains, ""~ 语法精准丢弃调试日志。先通过 journalctl、syslog 和 dmesg 确认冗余 debug 来源,再按进程名或消息内容编写过滤规则,最后用 rsyslogd -N1 验证并重启服务。

直接在 /etc/rsyslog.d/ 下新建规则文件,用 if-then-stop 或 :msg, contains, ""~ 语法精准丢弃调试日志,不写入磁盘,是最稳妥高效的做法。
识别哪些调试日志该过滤
先确认目标,避免误删关键信息:
- 运行
sudo journalctl -p debug --since "1 hour ago" | head -20查看近期 debug 级别日志来源 - 重点关注
sshd、avahi-daemon、NetworkManager、systemd等常输出冗余 debug 的服务 - 检查
/var/log/syslog或dmesg中高频重复的调试条目,例如"IPv6 disabled"、"link is up/down"、"firmware: failed to load"
用 if-then-stop 规则屏蔽指定程序的 debug 日志
适合按进程名+级别组合过滤,语义清晰、易维护:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 新建
/etc/rsyslog.d/99-block-debug.conf - 添加类似规则(注意放在通用规则如
*.*之前):if $programname == 'sshd' and $syslogseverity-text == 'debug' then /dev/null & stopif $programname == 'avahi-daemon' then /dev/null & stop - 若只想屏蔽某程序的 info 及以下,可写:
if $programname == 'cron' and $syslogseverity-text in ['debug','info'] then /dev/null & stop
用 :msg 表达式快速丢弃含特定文本的调试消息
轻量、无 I/O 开销,特别适合内核或系统服务中重复出现的调试提示:
- 新建
/etc/rsyslog.d/10-discard-msg.conf - 每行以冒号开头,用
~表示丢弃::msg, contains, "IPv6 disabled" ~:msg, contains, "throttling interrupt" ~:msg, regex, "ACPI Warning:.*_OSC.*platform does not support" ~ - 支持正则匹配变体,比
contains更灵活;所有规则必须置于默认日志写入规则之前
验证并生效
改完别急着重启,先防错:
- 用
sudo rsyslogd -N1检查语法是否正确 - 临时把规则指向测试文件,例如
if $programname == 'avahi-daemon' then /var/log/avahi-debug-test.log & stop,再用logger -t avahi-daemon "test debug"触发验证 - 确认无误后改回
/dev/null,执行sudo systemctl restart rsyslog

















