web-dev-qa-db-ja.com

log4j2.xmlを使用したTomcat7内部ロギング

log4j2を使用してTomcat7の内部ログを構成しようとしています。 Tomcat 6のサーバークラスをlog4j2でログに記録する で提供される回答に従いました。

Tomcat 7.0.54、およびlog4j-core-2.1.jarlog4j-api-2.1.jarを使用しています。エクストラをダウンロードして以下のすべての手順を実行しましたが、Tomcatを起動するとエラーが発生します。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

これらは私が実行したステップです:

  • log4j2.xml$CATALINA_BASE/libに入れます
  • 「extras」からTomcat-juli.jarTomcat-juli-adapters.jarをダウンロードします
  • log4j-api-2.1.jarlog4j-core-2.1.jarlog4j-jul-2.1.jar、およびTomcat-juli-adapters.jarを "extras"から$CATALINA_HOME/libに入れます。
  • $CATALINA_HOME/bin/Tomcat-juli.jarを "extras"のTomcat-juli.jarに置き換えます。
  • 削除$CATALINA_BASE/conf/logging.properties
  • log4j2-julブリッジ(log4j-jul-2.1.jar)のマネージャーを使用するようにログマネージャーを設定します。 catalina.shを変更して、クラスパスにbin/Tomcat-juli.jarlib/log4j-jul-2.1.jarlib/log4j-api-2.1.jar、およびlib/log4j-core-2.1.jarが含まれ、Tomcatの起動に使用されるコマンドに-Djava.util.loggingが含まれるようにします。 .manager = org.Apache.logging.log4j.jul.LogManager`

これ(LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/lib/log4j2.xml")をcatalina.shに追加しようとしましたが、機能しませんでした。

誰かがそれをうまく設定できるかどうか私に知らせてください。

11

私は次の手順を実行しました、そしてそれは私のために働きました。

  1. 次のjarファイルを$ CATALINA_HOME/lib に入れます。
    • log4j 2コア(log4j-core-2.4.1.jar)
    • log4j 2 api(log4j-api-2.4.1.jar)
    • log4 j1.0用のlog4j2ブリッジ(log4j-1.2-api-2.4.1.jar)
    • TomcatエクストラのTomcat-juli-adapters.jar
  2. 既存の$ CATALINA_HOME/bin /Tomcat-juli.jarをTomcatエクストラのTomcat-juli.jarに置き換えます
  3. ファイル$ CATALINA_HOME/conf /logging.propertiesを削除します
  4. 新しいlog4j2構成ファイル(log4j2.xml)を$ CATALINA_HOME/libに配置します

秘訣は、公式の Tomcat 7ドキュメント に従ってlog4J 1.Xをセットアップすることですが、代わりにlog4j2アーティファクトを使用します。また、このソリューションでは、$ CATALINA_HOME/bin /catalina.shまたはその他のファイル$ CATALINA_HOME/binを変更する必要はありません。

9
thorondor

私の間違いですが、$CATALINA_BASE/libを取得するには、クラスパスにlog4j2.xmlを含める必要がありました。

5

インストールに以下を適応させます:

私のTomcat8.5.xは/ opt/Tomcat /にあります

1。 log4j2jarファイルを/ opt/Tomcat/lib /にコピーします

(Windowsの場合はコピーを使用)

2。 /opt/Tomcat/conf/log4j2.xmlを作成します

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="LOGJ2 %d [%-6p] %c{1} – %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="*" level="trace">
            <AppenderRef ref="Console"/>
        </Logger>

        <Root level="info">
            <appenderRef ref="Console" level="info"/>
        </Root>
    </Loggers>
</Configuration>

3。 /opt/Tomcat/bin/setenv.shまたは/opt/Tomcat/bin/setenv.batを作成または編集します

Setenv.sh/batにCLASSPATHが設定されていないと、最初のTomcatブートローダーはクラスorg.Apache.logging.log4j.jul.LogManagerおよびlog4j2クラスにアクセスできません。 Tomcatを起動する前にCLASSPATHを設定しても、catalina.sh/bat nsets CLASSPATH setenv.sh/batを実行する前なので、最初のTomcatブートローダーには影響しません。

#The environment variable CLASSPATH is unset in catalina.sh/catalina.bat
CLASSPATH=/opt/Tomcat/lib/log4j-api-2.9.1.jar:/opt/Tomcat/lib/log4j-core-2.9.1.jar:/opt/Tomcat/lib/log4j-jul-2.9.1.jar
Java_OPTS=-Dlog4j.configurationFile=/opt/Tomcat/conf/log4j2.xml
LOGGING_MANAGER=-Djava.util.logging.manager=org.Apache.logging.log4j.jul.LogManager

4。 /opt/Tomcat/log/catalina.outのログを表示し、log42.xmlのLOGJ2プレフィックスに注目してください。

LOGJ2 2017-10-12 08:47:37,797 [INFO  ] VersionLoggerListener – Server built:          Sep 28 2017 10:30:11 UTC
LOGJ2 2017-10-12 08:47:37,797 [INFO  ] VersionLoggerListener – Server number:         8.5.23.0
LOGJ2 2017-10-12 08:47:37,797 [INFO  ] VersionLoggerListener – OS Name:               Linux
LOGJ2 2017-10-12 08:47:37,797 [INFO  ] VersionLoggerListener – OS Version:            4.4.0-93-generic
LOGJ2 2017-10-12 08:47:37,797 [INFO  ] VersionLoggerListener – Architecture:          AMD64
3
rjdkolb