如何强制Logback对jar中定义的类使用jar的日志记录配置?

时间:2019-02-01 10:22:26

标签: tomcat logging jar config logback

我有jar包,其中包含正在使用Logger的类。 此jar作为依赖项添加到应用程序中。 我有几个logback-test.xml文件。第一个文件在我的应用程序中定义,第二个文件在jar中定义。如果jar中的类使用名称为my-custom-logger的记录器,则必须遵循第二个文件(在jar中)中定义的配置。但是,不使用此配置。应用程序始终使用第一个配置文件。 我的应用程序正在Tomcat上运行,因此我认为Tomcat正在响应日志记录。

有人可以建议如何解决此问题吗?

第一个文件:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%date{HH:mm:ss.SSS} %highlight(%-5level) [%cyan(%-40.40logger{39})] %msg %gray(%mdc) %red(%rootException) %n</pattern>
    </encoder>
</appender>

<!-- root -->
<root level="info">
    <appender-ref ref="CONSOLE" />
</root>

第二个文件(来自jar):

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %date{EEE dd HH:mm:ss} [specific prefix] [%thread] %-5level %logger{0} - %msg%n
        </Pattern>
    </layout>
</appender>

<logger name="my-custom-logger" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

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

1 个答案:

答案 0 :(得分:1)

我建议您使用include标记将第二个配置文件(jar中的一个)包含在第一个配置文件(应用程序使用的一个)中。

以下是include用法的示例:

<configuration>
    <include resource="logback-second.xml"/> <!-- here I included the configuration file from jar using it's name
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%date{HH:mm:ss.SSS} %highlight(%-5level) [%cyan(%-40.40logger{39})] %msg %gray(%mdc) %red(%rootException) %n</pattern>
    </encoder>
</appender>

<!-- root -->
<root level="info">
    <appender-ref ref="CONSOLE" />
</root>