如何强制 Logback 为这个 jar 中定义的 类 使用来自 jar 的日志记录配置?
How to force Logback to use logging config from jar for classes defined in this jar?
我有 class 使用 Logger 的 jar 包。
此 jar 作为依赖项添加到应用程序中。
我有几个 logback-test.xml
个文件。第一个文件在我的应用程序中定义,第二个文件在 jar 中定义。如果 jar 中的 class 使用名称为 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>
我建议您使用 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>
我有 class 使用 Logger 的 jar 包。
此 jar 作为依赖项添加到应用程序中。
我有几个 logback-test.xml
个文件。第一个文件在我的应用程序中定义,第二个文件在 jar 中定义。如果 jar 中的 class 使用名称为 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>
我建议您使用 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>