SLF4J und Log4j-2-Bindung Maven-dependency
Hoffentlich eine einfache Frage, aber Mein google-foo ist versagt mir - ich habe ein maven Projekt, wo wir mit mit SLF4J Log4J-1.2-Bindungen.
Wollen wir uns jetzt zu bewegen, Log4j 2 besonders für die performance-Verbesserung - jedoch, ich kann nicht für das Leben von mir finden, die maven dependency für das log4j 2.0 bindend. Ich habe festgestellt, dass einige Notizen bei http://logging.apache.org/log4j/2.x/log4j-slf4j-impl/ aber keine Erwähnung von einer Abhängigkeit info.
Ich bin auch etwas verwirrt durch die Tatsache, dass es offenbar zwei Möglichkeiten, um slf4j oben auf log4j2 (- Bindung oder-Adapter)
Was ist die richtige Methode zu binden slf4j mit log4j2 und wie definiere ich die maven-Abhängigkeiten?
Bearbeiten, fügen Sie einige code nach der 1. Antwort unten, ich bin immer die Ausnahme:
Exception in thread "main" java.lang.NoSuchMethodError:
org/apache/logging/log4j/spi/AbstractLoggerWrapper.(Lorg/apache/logging/log4j/spi/AbstractLogger;Ljava/lang/String;)V
bei org.slf4j.impl.SLF4JLogger.(SLF4JLogger.java:48)
POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>logging.test</groupId>
<artifactId>logtest2</artifactId>
<version>0.0.1</version>
<name>logtest2</name>
<description>logtest2</description>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j.adapters</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0-beta3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta9</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta9</version>
</dependency>
</dependencies>
Meine log4j.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="A1" class="org.apache.log4j.FileAppender">
<param name="File" value="c:/logtest2.0/log.txt" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p %X{sessionId} %c MSG: %m%n" />
</layout>
</appender>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p %X{sessionId} %c MSG: %m%n" />
</layout>
</appender>
<category name="org.apache.log4j.xml">
<priority value="debug" />
<appender-ref ref="A1" />
</category>
<root>
<priority value="debug" />
<appender-ref ref="STDOUT" />
</Root> </log4j:configuration>
und meine test java Klasse:
package loggertest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerTest {
public static final Logger LOGGER = LoggerFactory.getLogger(LoggerTest.class);
public static void main(final String[] p_args) throws InterruptedException {
LOGGER.debug("Logger test");
}
}
InformationsquelleAutor Steve Atkinson | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowie einen gültigen log4j2.xml auf der classpath sollte Ihnen den Einstieg.
Sorry, hab ich versehentlich in die Irre führen, Sie brauchen nicht zu zählen log4j-api als Abhängigkeit, als log4j-core und log4j-slf4j-Implementierungen sowohl von ihm abhängen, so dass maven sollten, erhalten Sie für Sie (ich habe bearbeitet die Antwort, um dies zu reflektieren). Jedoch, Sie zu sein scheinen mit
org.apache.logging.log4j.adapters:log4j-slf4j-impl:2.0-beta3
. Versuchenorg.apache.logging.log4j:log4j-slf4j-impl:2.0-beta9
stattDass es bekam. Ich habe auch die Spur die apache-Dokumentation für it, ich falsch verstanden, der link, der Ihnen sagt, wie Sie zu konfigurieren maven-Projekten und dachte, es war ein link auf etwas ganz anderes! Zwischen Ihnen und den apache-docs, ich habe es jetzt funktioniert. Config scheint schöner, aber Sie sehen nicht wirklich die "10 mal schneller" aber auf einen test mit einer großen Anzahl von threads, die alle logging wie verrückt, aber ich will durchhalten, mit ausführlichen tests. Nochmals vielen Dank.
InformationsquelleAutor Tegi