温馨提示×

Ubuntu Syslog日志级别详解:如何设置

小樊
45
2025-12-16 23:05:39
栏目: 智能运维

Ubuntu Syslog 日志级别与设置指南

一 日志级别与设施速览

  • 日志级别(Priority,数值越小越严重,范围 0–7):
    • emerg(0)/panic:系统不可用,需立即处理
    • alert(1):必须立即采取行动
    • crit(2):严重错误,影响功能
    • err(3):一般性错误
    • warning(4):警告,潜在问题
    • notice(5):正常但重要
    • info(6):一般信息
    • debug(7):调试信息,最详细
    • 特殊关键字:none(不记录该设施的任何消息)
  • 常用设施(Facility):
    • kern(内核)、user(用户进程)、mail(邮件)、daemon(守护进程)
    • auth / authpriv(认证与安全)、syslog(日志系统自身)
    • cron(计划任务)、lpr(打印)、newsuucp
    • local0–local7(自定义应用)
  • 匹配规则要点:
    • 选择器语法:facility.level
    • 默认含义为“此级别及更严重”,可用操作符修改:=(仅此级别)!(排除此级别及更严重)
    • 多个选择器可用**;**分隔,后面的会覆盖前面的匹配结果。

二 在 rsyslog 中设置日志级别

  • Ubuntu 默认使用 rsyslog。规则通常写在 /etc/rsyslog.conf/etc/rsyslog.d/*.conf 中,语法为“选择器 + 动作”。常见动作包括写入文件(如 /var/log/*.log)、发送到远程主机(如 @192.0.2.10@@192.0.2.10 表示 UDP/TCP)。修改后执行 sudo systemctl restart rsyslog 生效。
  • 常用配置示例(写入本地并按级别过滤):
    # 记录所有设施的 warning 及以上到系统日志
    *.warning    /var/log/syslog
    
    # 仅记录内核的 emerg 级别
    kern.=emerg  /dev/console
    
    # 记录认证相关所有级别,但排除 mail 的所有级别
    auth,authpriv.*    /var/log/auth.log
    mail.none         /var/log/auth.log
    
    # 将全部日志发送到远程 syslog 服务器(UDP 514)
    *.*             @192.0.2.10:514
    
    说明:
    • = 表示“仅此级别”;若省略,则含义为“此级别及更严重”。
    • none 可用于排除某些设施的日志混入目标文件。

三 远程日志与接收端配置

  • 作为客户端发送日志(示例见上节末尾的 @192.0.2.10:514)。
  • 作为服务器接收日志(在接收端启用模块与端口监听,编辑 /etc/rsyslog.conf 或相应包含文件):
    # 启用 UDP 514 接收
    module(load="imudp")
    input(type="imudp" port="514")
    
    # 启用 TCP 514 接收
    module(load="imtcp")
    input(type="imtcp" port="514")
    
    保存后重启 rsyslog:sudo systemctl restart rsyslog。注意防火墙放行 UDP/TCP 514

四 与 systemd-journald 和应用程序的配合

  • systemd-journald 与 rsyslog 可并行工作:journald 负责采集与持久化(由 /etc/systemd/journald.conf 控制,如 SystemMaxUse=SystemMaxFileSize= 等),rsyslog 负责按设施/级别与文件、网络等动作进行转发与落盘。查看与轮转可用 journalctllogrotate
  • 应用自身也常具备日志级别选项,例如:
    • Nginx:在 /etc/nginx/nginx.conf 中设置 error_log /var/log/nginx/error.log warn;(可改为 debug 以开启调试)
    • Apache:在配置中使用 LogLevel debug 修改应用配置后需重启对应服务。

五 实用排查与最佳实践

  • 快速查看与过滤:
    • 查看系统日志:journalctl -xe
    • 按级别过滤:journalctl -p warning(或 errinfo 等)
  • 避免日志风暴:生产环境常将全局或多数设施设为 warning 或更高;调试阶段再临时下调到 info/debug
  • 精细分流:将 auth,authpriv 单独记录到 /var/log/auth.log,并对易产生大量日志的设施使用 .none 排除,保持关键日志可读。
  • 变更生效:每次修改 rsyslog 配置后执行 sudo systemctl restart rsyslog;远程接收需确保网络与防火墙策略正确。

0