【发布时间】:2015-11-22 02:13:55
【问题描述】:
我正在使用 logback 和 JUL 到 SLF4J 桥接器(后者用于捕获使用 Java Logging 的第三方库日志语句)。
我从第三方获取日志输出,但日志模式不是我为 Logback 指定的。 JUL 和 Logback 是否应该使用我在 logback.xml 中指定的相同模式?或者我需要单独设置 JUL 吗?最后,如果我需要单独设置 JUL,有没有办法在一个地方定义我的日志输出模式并将其转到 JUL 和 Logback?
我的设置如下:
在我的主类中,我有一个静态块(在类的顶部),其中包含以下几行:
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
我的 logback.xml 看起来像这样:
<configuration>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>
%d{HH:mm:ss.SSS} [%-32thread] %-5level | %-80msg | %class.%method\(%file:%line\)%n
</Pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
下面是我复制的两行日志输出。您会注意到第一行是我指定的格式,而第二行不是(因为它来自 JUL):
21:06:33.297 [ModelUpdateThread-1 ] INFO | view Molecules and Complexes took 1 ms for 17116 model elements | com.**[blanked out for privacy]**
Sat Nov 21 21:06:33 EST 2015 : com.tomsawyer.licensing.TSILicenseManager - setUseProxy
INFO: setUseProxy: false
【问题讨论】: