SpringBoot - Logback 打印第三方 Jar 日志解决方案

发布于:2024-04-15 ⋅ 阅读:(55) ⋅ 点赞:(0)

问题描述

最近碰到一个很苦恼的问题,就是第三方的 Jar 在自己项目里日志可以正常输出,但是一旦被引用到其他项目里,就日志死活打不出来……

解决方案

  • 这是原来的配置 - logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%tid] [%boldYellow(%thread)] %highlight(%-5level) %boldGreen(%logger) | %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>


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

</configuration>
  • 后来发现,只要在这里追加一个配置项即可,当然遇到多模块项目的话,可能每个 logback.xml 都要追加,具体原因还未找到,有大佬爬过坑的可以底下评论。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%tid] [%boldYellow(%thread)] %highlight(%-5level) %boldGreen(%logger) | %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <!-- 为dolphinscheduler-sdk-java-1.0.1-SNAPSHOT.jar中使用的Slf4j添加特定的配置 -->
    <logger name="com.github.weaksloth.dolphins" level="info" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

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

</configuration>