Spring Boot 2关于日志配置文件的使用
configuration节点
- scan=“true”,扫描配置文件改变
- scanPeriod=“10 seconds”,扫描时间间隔
- debug=“true”,可以输出日志框架的一些日志
- packagingData=“true”,可以输出jar包名称信息
appender 节点
//输出到控制台
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>utf-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern>
</encoder>
</appender>
//输出到文件
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${user.home}/${logurl}/info-%d{yyyyMMdd}.log.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>15</maxHistory>
</rollingPolicy>
<encoder>
<charset>utf-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %reqId [%thread] %-5level %logger{36} -%msg%n</Pattern>
</encoder>
</appender>
自定义encoder,输出额外信息
- 继承PatternLayoutEncoder
public class RequestPatternLayoutEncoder extends PatternLayoutEncoder {
public static final String REQUEST_PATTERN = "reqId";
@Override
public void start() {
PatternLayout patternLayout = new PatternLayout();
patternLayout.getDefaultConverterMap().put(REQUEST_PATTERN, ReqIdConverter.class.getName());
patternLayout.setContext(context);
patternLayout.setPattern(getPattern());
patternLayout.setOutputPatternAsHeader(outputPatternAsHeader);
patternLayout.start();
this.layout = patternLayout;
this.started = true;
}
}
- 继承ClassicConverter
public class ReqIdConverter extends ClassicConverter {
@Override
public String convert(ILoggingEvent event) {
String id = RequestContext.getContext().getId();
return id == null ? "---" : id;
}
}
- 配置encoder
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="org.ghost.springboot2.demo.common.log.RequestPatternLayoutEncoder">
<charset>utf-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %reqId [%thread] %-5level %logger{36} -%msg%n</Pattern>
</encoder>
</appender>
logger与root节点
- root设置根节点默认配置
- logger可以设置到具体某个包,additivity是否向上传递到root
<root level="INFO">
<appender-ref ref="INFO_FILE"/>
</root>
<logger name="org.ghost.springboot2.demo" level="DEBUG" additivity="true">
<appender-ref ref="STDOUT"/>
</logger>
springProfile节点
- 可以根据参数spring.profiles.active启动参数采用 不同的配置
<springProfile name="dev,test">
<logger name="org.ghost.springboot2.demo" level="DEBUG" additivity="true">
<appender-ref ref="STDOUT"/>
</logger>
</springProfile>
源码位置:
https://gitee.com/ceclar123/spring-boot-demo/tree/master/ch08
https://docs.spring.io/spring-boot/docs/2.2.0.BUILD-SNAPSHOT/reference/html/spring-boot-features.html#boot-features-custom-log-configuration
https://logback.qos.ch/manual/configuration.html