springboot-logback

exact      2022-04-20     449

关键词:

 

springboot logback配置

1.pattern解析:

  %d{yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX}   带时区的时间

  %level   日志级别

  [%thread]   线程名

  [%logger{50}:%line]    打印日志对应的方法和行数
  [uuid:%X{operation_id}]   这个是logback的MDC机制,没有使用mdc的话不需要用这个字段
  %msg%n          这个是要打印的数据,%n是换行
  %caller{2, DISP_CALLER_EVAL}   这个是指打印调用栈,即当前方法和调用这个方法的父级方法(这里配置2,只会往上打印一层)

<property name="error.pattern" value="%d{yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX} %level [%thread] [%logger{50}:%line] [uuid:%X{operation_id}] %msg%n %caller{2, DISP_CALLER_EVAL}"></property>

2.将不同级别的日志打印到不同的文件:
  下面的一句话表示这个appender只接受error日志的级别,其它级别的日志丢弃
      <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
3.logger配置
  每个logger可以配置对应的package,打印级别,additivity="true"表示这个logger匹配的日志,依然会抛到上层,父logger(也就是root),root可以打印到控制台
  
appender-ref 指定appender,每个appender定义具体的工具方式,打印、压缩策略
      <logger name="com.hikvision.log" level="DEBUG" additivity="false">
              <appender-ref ref="only-error" additivity="false"></appender-ref>
              <appender-ref ref="no-error"></appender-ref>
         </logger>
  1 <configuration scan="true" scanPeriod="30 seconds">
  2 
  3     <!-- <property name="FILE_PATH" value="./logs"></property> -->
  4     <property name="model" value="elk"></property>
  5     <!-- <property name="USER_NAME" value="gc"></property>
  6     <property name="OS" value="win"></property> -->
  7 
  8     <contextName>my_logback_test</contextName>
  9 
 10     <property name="log.pattern"
 11         value="%d{yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX} %level [%thread] [%logger{50}:%line] [uuid:%X{operation_id}] %msg%n"></property>
 12     <property name="error.pattern"
 13         value="%d{yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX} %level [%thread] [%logger{50}:%line] [uuid:%X{operation_id}] %msg%n %caller{2, DISP_CALLER_EVAL}"></property>
 14 
 15     <appender name="no-error"
 16         class="ch.qos.logback.core.rolling.RollingFileAppender">
 17         <file>${log.path:-./logs}/${model}.log</file>
 18         <encoder>
 19             <pattern>${log.pattern}</pattern>
 20             <charset>UTF-8</charset>
 21         </encoder>
 22         <rollingPolicy
 23             class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 24             <fileNamePattern>${model}.%i.log.zip</fileNamePattern>
 25             <minIndex>1</minIndex>
 26             <maxIndex>10</maxIndex>
 27         </rollingPolicy>
 28         <triggeringPolicy
 29             class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 30             <maxFileSize>20MB</maxFileSize>
 31         </triggeringPolicy>
 32         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 33             <level>TRACE</level>
 34             <onMatch>ACCEPT</onMatch>
 35             <onMismatch>NEUTRAL</onMismatch>
 36         </filter>
 37         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 38             <level>DEBUG</level>
 39             <onMatch>ACCEPT</onMatch>
 40             <onMismatch>NEUTRAL</onMismatch>
 41         </filter>
 42         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 43             <level>INFO</level>
 44             <onMatch>ACCEPT</onMatch>
 45             <onMismatch>NEUTRAL</onMismatch>
 46         </filter>
 47         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 48             <level>WARN</level>
 49             <onMatch>ACCEPT</onMatch>
 50             <onMismatch>NEUTRAL</onMismatch>
 51         </filter>
 52     </appender>
 53 
 54     <appender name="only-error"
 55         class="ch.qos.logback.core.rolling.RollingFileAppender">
 56         <file>${log.path:-./logs}/${model}.error.log</file>
 57         <encoder>
 58             <pattern>${error.pattern}</pattern>
 59             <charset>UTF-8</charset>
 60         </encoder>
 61         <rollingPolicy
 62             class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 63             <fileNamePattern>${model}.%i.log.zip</fileNamePattern>
 64             <minIndex>1</minIndex>
 65             <maxIndex>10</maxIndex>
 66         </rollingPolicy>
 67         <triggeringPolicy
 68             class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 69             <maxFileSize>20MB</maxFileSize>
 70         </triggeringPolicy>
 71         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 72             <level>ERROR</level>
 73             <onMatch>ACCEPT</onMatch>
 74             <onMismatch>DENY</onMismatch>
 75         </filter>
 76     </appender>
 77 
 78     <appender name="includedConsole"
 79         class="ch.qos.logback.core.ConsoleAppender">
 80         <encoder>
 81             <pattern>${log.pattern}</pattern>
 82         </encoder>
 83     </appender>
 84 
 85 
 86     <root level="INFO">
 87         <appender-ref ref="includedConsole"></appender-ref>
 88     </root>
 89     <springProfile name="prod">
 90         <logger name="com.hikvision.log" level="DEBUG" additivity="false">
 91             <appender-ref ref="only-error" additivity="false"></appender-ref>
 92             <appender-ref ref="no-error"></appender-ref>
 93         </logger>
 94     </springProfile>
 95     <springProfile name="dev">
 96         <logger name="com.hikvision.log" level="DEBUG" additivity="true">
 97             <appender-ref ref="only-error" additivity="false"></appender-ref>
 98             <appender-ref ref="no-error"></appender-ref>
 99         </logger>
100     </springProfile>
101     <springProfile name="test">
102         <logger name="com.hikvision.log" level="DEBUG" additivity="true">
103             <appender-ref ref="only-error" additivity="false"></appender-ref>
104             <appender-ref ref="no-error"></appender-ref>
105         </logger>
106     </springProfile>
107 
108 </configuration>