2016-04-27 8 views
0

各spring mvcプロジェクトライブラリは独自のログフレームワークを使用しています。 log4j、slf4j、logback、jboss-logging、commons-loggingなどがあります。クラスパスは、複数のSLF4Jバインディングが含まれています。ここではGlassFish 4では、pom.xmlでログフレームワークの依存関係が働いていません

のpom.xml

<log4j.version>1.6.5</log4j.version> 
<slf4j.version>1.7.16</slf4j.version> 
<slf4j.log4j13.version>1.0.1</slf4j.log4j13.version> 
<logback.version>1.1.2</logback.version> 
<jboss.logging.version>3.3.0.Final</jboss.logging.version> 
<commons.logging.version>1.2</commons.logging.version> 

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-bom</artifactId> 
     <version>2.5</version> 
     <scope>import</scope> 
     <type>pom</type> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
<dependency> 
    <groupId>ant</groupId> 
    <artifactId>ant-jakarta-log4j</artifactId> 
    <version>1.6.1</version> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>${slf4j.version}</version> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>${slf4j.version}</version> 
</dependency> 

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>${logback.version}</version> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j13</artifactId> 
    <version>${slf4j.log4j13.version}</version> 
</dependency> 

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-api</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-web</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-slf4j-impl</artifactId> 
</dependency> 
</dependencies> 

は、プロジェクト

SLF4Jを実行中に表示された重大なエラーです。

SLF4J:実測[jarファイル:ファイル:!/WEB-INF/lib/log4j-slf4j-impl-2.5.jar /org/slf4j/impl/StaticLoggerBinder.class]に結合

SLF4J:結合が見つかりました[jar:file:/WEB-INF/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:[jar:file:/ WEB内のバインディングが見つかりました。 -INF/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:[jar:file:/ WEB-INF/lib/slf4j-log4j13]のバインディングが見つかりました。 -1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:実際の結合が見られるタイプ[org.apache.logging.slf4j.Log4jLoggerFactory] ​​

ERROR StatusLoggerませんlog4j2の設定ファイルです。デフォルト設定を使用する:エラーのみをコンソールに記録する。

各ロギングフレームワークは、プロジェクトを組み込むために必要です。しかし、プロジェクトをエラーなく実行している間に、外部ライブラリが必要とするロギングフレームウォッチを保持するためのトリックはありません。

答えて

1

通常、それぞれ異なるロギングAPIを使用する複数のコンポーネントがあります。あなたが通常やりたいことは、それぞれを特定のロギング実装でバインドすることです。たとえば、Springはcommons-loggingを使用してLog4jにルーティングします。log4j-jcl jarをインクルードします。同様に、SLF4JをLog4j 2にルーティングするには、log4j-slf4j-impl jarをインクルードします。 Logback jarsは別のロギング実装であるため、含まないようにします。上記のエラーの場合、SLF4JのLog4j 2 SLF4Jバインディング、logback、log4j1.2バインディング、およびlog4j 1.3バインディングがあることを示しています。それらのうちの1つしか持っていないので、使用したくないジャーを取り除いてください。

SLF4JはLog4j 2バインディングを選択したことを伝えていますが、Log4j 2から構成ファイルを見つけることができないというエラーが表示されます。通常はlog4j2.xmlです。

+0

これらはのpom.xmlから削除成果物とプロジェクトがどんな重大なエラーなしで実行されているが、クラスが除外のロギングフレームワークが動作するかどうかと呼ばれている場所を確認する必要があります。 アリ - ジャカルタ - log4jの SLF4J-API JCLオーバーSLF4J logback-古典 SLF4J-log4j13 Vivaswan

関連する問題