現在、新しいWebapp(Tomcat 6で実行)を開始しています。slf4jを使用するコンポーネントとコモンログを使用するコンポーネントがあります。いくつかの理由(主にアペンダー:SocketAppenderとSyslogAppenderだけでなく、ログイベントを失うことなく構成の再読み込みを促進しました)
今私の質問は次のとおりです。-新しいクラスをどのインターフェイスにプログラムしますか? loag4jまたはslf4j?またはコモンズロギング?
Jarをデプロイするための好ましい方法は何ですか?それらをアプリケーション戦争に入れますか、それともTomcatライブラリに入れますか?
どのjarをデプロイする必要がありますか? log4j(slf4jおよびcommonsバインディングを含む)、commonsロギング(slf4j-api-1.7.2.jar)およびslf4j api(slf4j-api-1.7.2.jar)
私は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 12cの場合これはsrc/main/webapp/WEB-INF内のweblogic.xmlにあります
<?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>
Log4J 1.2でSLF4Jを使用しましたが、Log4J2.0を使用していないことに注意してください。そうは言っても、私はあなたの質問に次のように答えます:
lib
ディレクトリに配置することはほとんどありません。そうしないと、自分だけでなく、そのアプリケーションサーバー上のすべてのWebアプリケーションに影響します。さらに、アプリケーションサーバーのlib
ディレクトリ内のjarは、webappsをデプロイすることによって制御することはできませんが、手動で管理する必要があります。slf4j-api-1.7.2.jar
、 log4j-to-slf4j-2.0-beta4.jar
、 log4j-2.0-beta4.jar
および log4j-core-2.0-beta4.jar
、および依存関係。あなたがそれを使用しているなら、Mavenは必要な依存関係をもたらすと確信しています。