Linux系统日志级别如何调整_rsylslog配置说明【指导】

14次阅读

rsyslog 日志级别通过 facility+priority 组合控制,而非 level=xxx;优先级从高到低为 emerg、alert、crit、err、warning、notice、info、debug;可用 *.warning 等规则限制输出级别,修改后需重启 rsyslog 服务。

Linux 系统日志级别如何调整_rsylslog 配置说明【指导】

Linux 系统中 rsyslog 的日志级别不是直接在 配置文件 里用“level=xxx”设置的,而是通过 日志设施(facility)+ 优先级(priority)组合来过滤和 路由 日志。调整的关键在于修改 /etc/rsyslog.conf/etc/rsyslog.d/*.conf中的规则行,控制哪些日志被记录、写入何处、是否转发。

理解日志优先级(priority)与匹配逻辑

rsyslog 支持 8 个标准优先级,从高到低依次为:emerg、alert、crit、err、warning、notice、info、debug。规则中常用的是“>=”、“==”、“.*”等操作符:

  • *.info 表示所有 facility 的 info 及以上级别(即 info、notice、warning、err……)
  • mail.* 表示 m ail facility 的所有级别日志
  • authpriv.=info 表示 authpriv facility 的 恰好info 级别(不包含 notice 或 debug)
  • daemon.!info 表示 daemon facility 中 排除info 级别(即只记录其他级别)

调整本地日志输出级别(例如限制 /var/log/messages 只存 warn 以上)

编辑/etc/rsyslog.d/50-default.conf(或主配置中对应规则),找到类似这一行:

*.*;auth,authpriv.none -/var/log/syslog

若只想让 /var/log/messages 保存 warning 及以上日志,可改为:

*.warning;auth,authpriv.none -/var/log/messages

注意:该行末尾的 - 表示异步写入(提升性能),保留即可。改完后需重启服务生效:

sudo systemctl restart rsyslog

限制特定程序或服务的日志量(如减少 sshd 调试日志)

如果某服务(如 sshd)开启了 debug 日志导致 /var/log/auth.log 暴增,可在 rsyslog 配置中单独拦截:

  • 新建/etc/rsyslog.d/20-sshd-limit.conf
  • 加入规则:if $programname == ‘sshd’ and $syslogseverity(6=info,即只记录 info 及更严重级别)
  • 再加一行:if $programname == ‘sshd’ and $syslogseverity(防止日志被后续规则重复处理)

这样既保留必要日志,又避免 debug 刷屏。记得测试语法:sudo rsyslogd -N1,无报错再重启。

验证与排查技巧

调整后建议立即验证效果:

  • logger -p daemon.info "test info"logger -p daemon.debug "test debug" 分别发两条日志
  • 检查目标文件(如/var/log/messages)是否只收到 info 那条
  • 查看 rsyslog 运行状态:sudo systemctl status rsyslog,留意是否有“invalid selector”类错误
  • 开启 rsyslog 调试日志(临时):sudo rsyslogd -dn 2>&1 | grep -i "filter|rule",可直观看到每条日志匹配了哪条规则

不复杂但容易忽略的是:rsyslog 按配置文件顺序逐行匹配,stop语句会终止后续处理,合理使用能精准控流。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-19发表,共计1511字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources