私は数日間この頭を叩いてしまいました。 Log4j2互換性ライブラリを追加すると、Log4j2は下位互換性があります。log4j1に対して書かれたコンポーネントは、log4j2のアップグレード後にログに記録されません。
のlib \マイWEB-INFがあります
- SLF-API
- のlog4j-1.2-API(後方compatのライブラリ。)
- のlog4j-API(log4j2)
- log4jのコア(log4j2)
- のlog4j-ウェブ(Webアプリケーションの自動配線)
私の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>
私はAPIをlog4j2するために私のコントロール(com.mycompany.mycode)の下でコードをアップグレードしていると、彼らは仕事/完璧にログインします。私のコントロール下ではなく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.
これは、Ralphと、log4j1 jarがまだクラスパスにあるという私の仮説を確認します。 –
Log4j 1のjarの場所を見つける別の方法で私の答えを更新しました。 –
いいえ、確認していません。すべてのlog4j1 API呼び出しは、log4j2呼び出しにブリッジされます。だから私が本当に確認していることは、あなたが何が間違っているのか分からないということです。 –