几天来,我一直在努力奋斗,无法弄清楚。如果添加log4j1兼容性库,则Log4j2向后兼容。
我的web-inf \ lib有:
我的web.xml具有:
<!-- log4j2 auto-wiring -->
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file:///${catalina.base}/conf/log4j2.xml</param-value>
</context-param>
我的[tomcat] /conf/log4j2.xml是:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
<Appenders>
<!-- Appends to CONSOLE -->
<Console name="consoleAppender" target="SYSTEM_OUT">
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout pattern="%5p (%F:%L) - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.mycompany.componentA" level="WARN" />
<Logger name="com.mycompany.componentA.QueryLogger" level="DEBUG" />
<Logger name="com.mycompany.mycode" level="DEBUG" />
<Root level="WARN">
<AppenderRef ref="consoleAppender" />
</Root>
</Loggers>
</Configuration>
我已经将控制下的代码(com.mycompany.mycode)升级到了log4j2 API,它们可以正常工作/记录。不受我控制但针对log4j1(com.mycompany.componentA)编写的代码根本无法登录。没有错误,没有调试,什么都没有。
有趣的是...当我启动应用程序时,在应用程序启动时,我收到有关配置错误的log4j1警告。这也让我感到困惑,因为WAR中没有log4j1库(兼容性API除外)。警告是:
log4j:WARN No appenders could be found for logger (com.mycompany.componentB)
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
编辑:我(终于)弄清楚了到底发生了什么。我的一个依赖项做了一件非常糟糕的事情,并将log4j1类绑定到了它的最终jar中。因此,在类路径上没有log4j1 jar,但是在类路径上没有log4j1 CLASSES。
我能够执行此工作的唯一方法是:
这可能是非常不正确的,但是如上所述,这是我经过数周的愚弄后才能使它工作的唯一方法。
我对lo4j1桥的理解是,仅需要对log4j2进行接线并包括桥,例如,无需手动对log4j1进行接线。实际上,这似乎没有发生。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句