3

TL;DR log4j2.xml 構成でネストされた KeyValuePair で JsonLayout を使用している場合、結果のログ メッセージは空です。理由はありますか?

長い話

次のログ関連の JAR で Tomcat 8.5.43 を使用しています。

  • ジャクソン-注釈-2.9.7.jar
  • ジャクソン-コア-2.9.7.jar
  • jackson-databind-2.9.7.jar
  • slf4j-api-1.7.25.jar
  • jcl-over-slf4j-1.7.25.jar
  • log4j-api-2.12.0.jar
  • log4j-core-2.12.0.jar
  • log4j-jul-2.12.0.jar
  • log4j-slf4j-impl-2.12.0.jar
  • tomcat-extras-juli-8.5.2.jar (/bin の tomcat-juli.jar として)
  • tomcat-extras-juli-adapters-8.5.2.jar
  • log4j-web-2.12.0.jar (webapp 内)

および log4j2.xml 構成:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
  <Console name="consoleappender" target="SYSTEM_OUT">
    <JsonLayout compact="true" eventEol="true" stacktraceAsString="true" locationInfo="true">
      <KeyValuePair key="foo" value="bar"/>
    </JsonLayout>
  </Console>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="consoleappender" />
    </Root>
  </Loggers>
</Configuration>

setenv.sh で、クラスパスを次のように設定しました。

CLASSPATH="$JAVA_HOME/lib/tools.jar\
:$CATALINA_HOME/lib/log4j-api.jar\
:$CATALINA_HOME/lib/log4j-core.jar\
:$CATALINA_HOME/lib/log4j-jul.jar\
:$CATALINA_HOME/lib/jackson-annotations.jar\
:$CATALINA_HOME/lib/jackson-core.jar\
:$CATALINA_HOME/lib/jackson-databind.jar"

そして、追加の JVM 引数を指定して Tomcat を実行します。

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
-Dlog4j.configurationFile=file:log4j2.xml"

したがって、すべての Tomcat、JULI、Apache コモンズ、および Slf4j ロギングは、最終的に Log4J2 にリダイレクトする必要があります。

残念ながら、私が見るのはこれだけです:{"logEvent":"","foo":"bar"}

このようなものの代わりに: {"thread":"main","level":"INFO","loggerName":"org.apache.catalina.startup.VersionLoggerListener","message":"Server version: Apache Tomcat/8.5.43","endOfBatch":false,"loggerFqcn":"org.apache.logging.log4j.jul.ApiLogger","threadId":1,"source":{"class":"org.apache.juli.logging.impl.Jdk14Logger","method":"log","file":"Jdk14Logger.java","line":87},"threadPriority":5,"instant":{"epochSecond":1562919500,"nanoOfSecond":701000000}}

KeyValuePairすべてを削除すると、期待どおりに正常に動作します。

ここで何が問題なのですか?

4

1 に答える 1

5

同じ問題が発生しています。どういうわけかlog4j-2.12.0に関連していますが、2.11.2では問題ありません。

于 2019-07-19T08:10:32.690 に答える