Iあなたのアプリケーションサーバが競合バージョンを持っている場合log4j2でSLF4Jを使用して
slf4j-api-1.7.12.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
log4j-slf4j-impl-2.2.jar
jcl-over-slf4j-1.7.12.jar(get rid of commons logging jars)
を使用していますことは、あなたには、いくつかのベンダー固有のクラスローダの設定を使用して上書きする必要があるかもしれません
例えばWebLogicに私はSRC /メイン/ webappの/ WEB-INF
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.5/weblogic-web-app.xsd">
<container-descriptor>
<prefer-application-packages>
<package-name>org.apache.log4j.*</package-name>
<package-name>org.apache.commons.logging.*</package-name>
<package-name>org.apache.commons.lang.*</package-name>
<package-name>org.apache.commons.io.*</package-name>
<package-name>org.apache.commons.collections4.*</package-name>
<package-name>org.slf4j.*</package-name>
</prefer-application-packages>
</container-descriptor>
<jsp-descriptor>
<keepgenerated>true</keepgenerated>
<debug>true</debug>
</jsp-descriptor>
<context-root>/cnfg</context-root>
</weblogic-web-app>
1. OK 2.私が戦争にすべての瓶を入れたら、私は戦争の外で伐採設定をすることができず、(自動更新で)実行時に設定を操作できないという欠点があります。 (これはもっとtomcat/log4j_2.0の質問かもしれません。私は別の投稿でそれを聞いてください) 3.私はlog4j * 2.0を使用する予定です*私はlog4j-slf4j-impl.jarがslf4j-log4j12の代わりに必要と仮定します。 .jar、これは正しいですか? – raudi
log4j 2.0を使用していないので、必要な実装JARが不明です。しかし、それはSLF4Jサイトで利用できるはずです。 – parsifal
あなたの設定を外部に保つために、あなたは即座にそれを変更することができます:これは、設定ファイルをlibディレクトリに置くだけです。これは、WAR内からのクラスパススキャンによって検出されます。しかし、私はJMXを使用してログレベルを調整するほうがはるかに好きです。 Log4J 1.2にはJMX Beanがあり、2.0でも期待しています。インスタンス化すると、プラットフォームJMXプロバイダに自身を登録するので、JConsoleのようなツールを使用してアクセスできます。 – parsifal