2016-04-27 13 views
0

Jede Frühjahr mvc Projektbibliothek verwendet eine eigene Protokollierung Framework viz. Log4j, Slf4j, Logback, Jboss-Logging, Commons-Logging usw. wie unten mit Maven-Integration angegeben.GlassFish 4, keine Protokollierung Framework Abhängigkeiten funktioniert in 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> 

ist die Schwere Fehler angezeigt, während das Projekt läuft

SLF4J: Klassenpfad mehrere SLF4J Bindungen enthält.

SLF4J: Gefunden in der Bindung [jar: file: /WEB-INF/lib/log4j-slf4j-impl-2.5.jar /org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Gefunden Bindung in [jar: file: /WEB-INF/lib/logback-classic-1.1.2.jar! /org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Gefunden in [jar: file:/WEB -INF/lib/slf4j-log4j12-1.7.12.jar! /org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Gefunden Bindung in [jar: Datei:/WEB-INF/lib/slf4j-log4j13 -1.0.1.jar! /org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Die tatsächliche Bindung ist vom Typ [org.apache.logging.slf4j.Log4jLoggerFactory]

ERROR StatusLogger Keine log4j2 Konfigurationsdatei gefunden. Standardkonfiguration verwenden: Nur Fehler in der Konsole protokollieren.

Jedes Protokollierungsframework wird benötigt, damit das Projekt einbezogen werden kann. Aber gibt es einen Trick, um die Logging-Framewokrs zu erhalten, die von den externen Bibliotheken benötigt werden, während das Projekt ohne Fehler ausgeführt wird.

Antwort

1

Normalerweise haben Sie mehrere Komponenten, die jeweils unterschiedliche Protokollierungs-APIs verwenden. Normalerweise möchten Sie jeden mit einer bestimmten Protokollimplementierung binden. Zum Beispiel verwendet Spring commons-logging. Um es zu Log4j 2 zu routen, würden Sie das log4j-jcl jar einschließen. Um SLF4J zu Log4j 2 zu routen, würden Sie log4j-slf4j-impl jar hinzufügen. Sie würden keine Logback-Jars einschließen, da es sich um eine andere Protokollimplementierung handelt. In dem obigen Fall zeigen die Fehler, die Sie erhalten, dass Sie Log4j 2 SLF4J Binding, Logback, Log4j1.2 Binding und Log4j 1.3 Bindings für SLF4J haben. Sie sollten nur 1 davon haben, also entfernen Sie die Gläser für diejenigen, die Sie nicht verwenden möchten.

Beachten Sie, dass SLF4J Ihnen sagt, dass es die Log4j 2-Bindung ausgewählt hat, aber dann erhalten Sie einen Fehler von Log4j 2, der Sie darüber informiert, dass es keine Konfigurationsdatei finden kann - normalerweise log4j2.xml.

+0

Diese sind die artifactId vom pom.xml und das Projekt entfernt werden ohne schweren Fehler laufen, aber überprüfen müssen, wo immer Klasse, ob die ausgeschlossenen Logging Frameworks arbeiten aufgerufen: ant-jakarta-log4j slf4j-api JCL-over-slf4j logback-classic slf4j-log4j13 Vivaswan