Spring Boot 2关于日志配置文件的使用

本文详细介绍了SpringBoot2中日志配置的方法,包括configuration、appender节点的使用,自定义encoder输出额外信息,logger与root节点配置,以及springProfile节点的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值