【问题标题】:console pattern not recognized in logback-spring.xmllogback-spring.xml 中无法识别控制台模式
【发布时间】:2020-11-20 07:41:26
【问题描述】:

我已经在 stackoverflow 上查找过,但没有找到类似的东西。

我使用带有以下依赖项的 Spring Boot:

spring-boot 2.2.1 with
spring-boot-starter-logging 2.2.1
logback-core 1.2.3
logback-classic 1.2.3

我想为我的日志输出使用自定义模式,以便在控制台上打印我的 mdc.variables。通过 application.properties

工作
logging.level.com.mypackage=TRACE
logging.pattern.level=%d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable}] %-5level %logger{36} - %m%n

但我得到了双重条目,但我无法通过 application.properties 设置可加性属性。我必须使用 logback-spring.xml。看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

    <logger name="com.mypackage" level="TRACE" additivity="false">
        <appender-ref ref="CONSOLE"/>
    </logger>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable}] %-5level %logger{36} - %m%n
            </Pattern>
        </encoder>
    </appender>
</configuration>

这解决了双重条目。但是该模式不适用于日志输出。我可以有双重条目或没有模式,因为无法通过 application.properties 和 logback-spring.xml 组合配置。我做错了什么?

【问题讨论】:

    标签: spring-boot logback application.properties


    【解决方案1】:

    我终于发现了问题所在。我检查了 github 上的 defaults.xml 和 ConsoleAppender.xml,例如

    https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml

    https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/console-appender.xml

    解决方案是定义常量 CONSOLE_LOG_PATTERN。并在导入 defaults.xml 和 console-appender.xml 之前定义它

    我的工作配置文件现在看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%t] [myMdc:%X{myMdcVariable] %-5level %logger{36} - %m%n"/>
    
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>
    
        <logger name="com.mypackage" level="TRACE" additivity="false">
            <appender-ref ref="CONSOLE"/>
        </logger>
    
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>
                    ${CONSOLE_LOG_PATTERN}
                </pattern>
            </encoder>
        </appender>
    
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2018-01-12
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 2019-03-15
      相关资源
      最近更新 更多