log4j2
を使用してTomcat7の内部ログを構成しようとしています。 Tomcat 6のサーバークラスをlog4j2でログに記録する で提供される回答に従いました。
Tomcat 7.0.54、およびlog4j-core-2.1.jar
、log4j-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
に入れますTomcat-juli.jar
とTomcat-juli-adapters.jar
をダウンロードしますlog4j-api-2.1.jar
、log4j-core-2.1.jar
、log4j-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.jar
、lib/log4j-jul-2.1.jar
、lib/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
に追加しようとしましたが、機能しませんでした。
誰かがそれをうまく設定できるかどうか私に知らせてください。
私は次の手順を実行しました、そしてそれは私のために働きました。
秘訣は、公式の Tomcat 7ドキュメント に従ってlog4J 1.Xをセットアップすることですが、代わりにlog4j2アーティファクトを使用します。また、このソリューションでは、$ CATALINA_HOME/bin /catalina.shまたはその他のファイル$ CATALINA_HOME/binを変更する必要はありません。
私の間違いですが、$CATALINA_BASE/lib
を取得するには、クラスパスにlog4j2.xml
を含める必要がありました。
インストールに以下を適応させます:
私の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