首页主机资讯centos日志记录级别设置指南

centos日志记录级别设置指南

时间2025-12-06 03:22:03发布访客分类主机资讯浏览858
导读:一 核心概念与级别对照 日志由“设施 Facility”和“级别 Severity”共同决定。设施代表日志来源类别,常见有:authpriv、cron、daemon、kern、mail、syslog、user、local0–local7;...

一 核心概念与级别对照

  • 日志由“设施 Facility”和“级别 Severity”共同决定。设施代表日志来源类别,常见有:authpriv、cron、daemon、kern、mail、syslog、user、local0–local7;级别从低到高共 8 级debug(7)、info(6)、notice(5)、warning(4)、err(3)、crit(2)、alert(1)、emerg(0)。设置“级别”时,含义是“记录该级别及其以上更严重级别”的日志。例如:mail.=warn 仅记录 mail 的 warningmail.err 记录 err 及以上mail.*; mail.!info 记录 mail 的全部级别但排除 info

二 系统日志 rsyslog 与 journald 的设置

  • 配置文件与模块
    • 主配置:/etc/rsyslog.conf,包含模块加载、全局指令与规则;常见模块有 imuxsock、imjournal、imklog,以及可选的 imudp/imtcp 用于接收远程日志(UDP/TCP 514 端口)。CentOS 7 起默认通过 imjournalsystemd journal 读取本地日志。修改后执行:systemctl restart rsyslog 生效。
  • 常用选择器与动作
    • 选择器语法:< 设施> .< 级别或操作符> ;动作可以是本地文件、用户、远程主机等。示例:
      • 记录除 mail、authpriv、cron 外所有 info 及以上/var/log/messages*.info; mail.none; authpriv.none; cron.none /var/log/messages
      • 仅记录 mail 的 warningmail.=warn /var/log/mail_warn.log
      • 记录 mail 全部但排除 infomail.*; mail.!info /var/log/mail_all_but_info.log
      • 忽略 local3 全部日志:local3.* ~
      • 转发到远程(UDP/TCP):*.* @192.0.2.10*.* @@192.0.2.10:10514
      • 文件前的短横线“-”表示异步写入(减少 I/O,断电可能丢未落盘数据):mail.* -/var/log/maillog
  • 远程接收与队列
    • 启用接收:取消注释 imudp/imtcpUDPServerRun 514 / InputTCPServerRun 514;远程侧按上述转发语法发送。
    • 可靠转发建议开启磁盘队列(示例):
      $ActionQueueFileName fwdRule1
      $ActionQueueMaxDiskSpace 1g
      $ActionQueueSaveOnShutdown on
      $ActionQueueType LinkedList
      $ActionResumeRetryCount -1
      *.* @@192.0.2.10:514
      
  • 与 systemd journal 的关系
    • 现代 CentOS 使用 journald 采集内核与系统日志,rsyslog 通过 imjournal 消费;如需查看与分析,可用 journalctl(如 journalctl -u rsyslog -f 实时跟踪)。rsyslog 仍负责按规则写入文件、转发与落盘策略。

三 Java 应用日志级别设置

  • 配置优先级建议:配置文件 > 启动参数/环境变量 > 代码动态设置。
  • 常见框架与示例
    • Spring Boot(application.properties/yml)
      • properties:logging.level.root=INFOlogging.level.com.example=DEBUG
      • yml:
        logging:
          level:
            root: INFO
            com.example: DEBUG
        
    • Logback(logback.xml)
      <
          configuration>
          
        <
          appender name="FILE" class="ch.qos.logback.core.FileAppender">
          
          <
          file>
          /var/log/myapp.log<
          /file>
          
          <
          encoder>
          
            <
          pattern>
      %d{
      ISO8601}
       %-5level [%thread] %logger{
      36}
           - %msg%n<
          /pattern>
          
          <
          /encoder>
          
        <
          /appender>
          
        <
          root level="INFO">
          
          <
          appender-ref ref="FILE"/>
          
        <
          /root>
          
      <
          /configuration>
          
      
    • Log4j2(log4j2.xml)
      <
          Configuration status="WARN">
          
        <
          Appenders>
          
          <
          Console name="Console" target="SYSTEM_OUT">
          
            <
      PatternLayout pattern="%d{
      yyyy-MM-dd HH:mm:ss}
       %-5level %logger{
      36}
           - %msg%n%ex"/>
          
          <
          /Console>
          
        <
          /Appenders>
          
        <
          Loggers>
          
          <
          Root level="INFO">
          
            <
          AppenderRef ref="Console"/>
          
          <
          /Root>
          
        <
          /Loggers>
          
      <
          /Configuration>
      
      
  • 运行时动态调整
    • 多数框架支持 JMX、HTTP 管理接口或 API 动态修改日志级别;也可在代码中按框架 API 调整(如设定 Logger 的 Level)。生产建议以配置文件为主,动态调整为辅。

四 日志轮转与保留策略

  • 使用 logrotate 管理日志文件大小与保留份数,避免单文件过大。示例(/etc/logrotate.d/myapp):
    /var/log/myapp.log {
        
      weekly
      rotate 4
      create 0644 root utmp
      missingok
      notifempty
      compress
      delaycompress
      sharedscripts
      postrotate
        /usr/bin/systemctl kill -s HUP rsyslog >
        /dev/null 2>
        &
    1 || true
      endscript
    }
        
    
    • 说明:weekly 每周轮转;rotate 4 保留 4 份;compress 压缩旧日志;postrotate 发送 HUP 让 rsyslog 重新打开日志文件。对高频日志(如 mail)使用“-”异步写入可减少 I/O,但需权衡断电数据丢失风险。

五 快速排错与最佳实践

  • 验证规则是否生效
    • logger 发送测试日志并观察目标文件或远程服务器是否收到:logger -p local3.info "test rsyslog rule";远程可用 tcpdump udp port 514ss -lunpt | grep 514 检查端口连通性。
  • 避免常见误区
    • mail.*mail.none 同时用于同一目标会造成冲突;使用 mail.*; mail.!info 排除某级别更清晰。
    • 远程转发建议启用磁盘队列与重试,提升可靠性;必要时使用 TCP 保证顺序与可靠性。
    • 谨慎使用文件前的“-”异步写入,确保业务可容忍潜在的少量数据丢失。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos日志记录级别设置指南
本文地址: https://pptw.com/jishu/765503.html
如何利用centos日志优化数据库 centos日志文件位置及管理方法

游客 回复需填写必要信息