Skip to content

Springboot+Logback

参考文章:https://juejin.im/post/5b51f85c5188251af91a7525

日志的记录可以容易定位一些生产问题,可以配合Elasticsearch记录操作日志

SpringBoot默认用日志框架是logback

logback由三个模块组成

logback-core         -----> 基础模块,提供关键的通用机制

logback-classic      -----> 实现简单日志门面

logback-access      -----> 与servlet容器交互的模块

LogBack配置文件

log配置文件加载顺序:

logback.xml--->application.properties--->logback-spring.xml.

logback.xml加载早于application.properties,所以如果你在logback.xml使用了变量时,而恰好这个变量是写在application.properties时,那么就会获取不到,只要改成logback-spring.xml就可以解决

xml
<configuration scan="true" scanPeriod="60 seconds" debug="false">  
  <property name="glmapper-name" value="glmapper-demo" /> 
  <contextName>${glmapper-name}</contextName> 

  <appender>
    //xxxx
  </appender>   

  <logger>
    //xxxx
  </logger>

  <root>             
    //xxxx
  </root>  
</configuration>

详细配置:https://www.jianshu.com/p/0d04566fd236


日志配置参考

base.xml

xml
<?xml version="1.0" encoding="UTF-8"?>

<included>
  <property name="log_pattern_default" value="%d{HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n%ex"/>
  <property name="log_file_default" value="log/service.log"/>
  <property name="log_file_pattern_default" value="log/service.%d{yyyy-MM-dd}.%i.log"/>
  <property name="log_file_max_history_default" value="10"/>
  <property name="log_file_max_size_default" value="100MB"/>
  <property name="log_file_max_total_size_default" value="10GB"/>
  <appender name="file_out" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log_file:-${log_file_default}}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${log_file_pattern:-${log_file_pattern_default}}</fileNamePattern>
      <maxFileSize>${log_file_max_size:-${log_file_max_size_default}}</maxFileSize>
      <maxHistory>${log_file_max_history:-${log_file_max_history_default}}</maxHistory>
      <totalSizeCap>${log_file_max_total_size:-${log_file_max_total_size_default}}</totalSizeCap>
    </rollingPolicy>
    <encoder>
      <pattern>${log_pattern:-${log_pattern_default}}</pattern>
    </encoder>
  </appender>
  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${log_pattern:-${log_pattern_default}}</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="stdout"/>
    <appender-ref ref="file_out"/>
  </root>
</included>

logback-spring.xml

xml
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
  <property name="log_file" value="log/service.log"/>
  <property name="log_file_pattern" value="log/service.%d{yyyy-MM-dd}.%i.log"/>
  <include resource="top/xinzhang0618/gaohuo/logger/base.xml"/>

  <springProfile name="dev,test">
    <logger name="top.xinzhang0618.gaohuo" level="debug" additivity="false">
      <appender-ref ref="file_out"/>
      <appender-ref ref="stdout"/>
    </logger>
  </springProfile>

  <springProfile name="prod">
    <logger name="top.xinzhang0618.gaohuo" level="info" additivity="false">
      <appender-ref ref="file_out"/>
    </logger>
  </springProfile>
</configuration>

application.yml

xml
logging:
  config: classpath:config/logback-spring.xml