kann keine gute Antwort finden, warum slf4j Protokollierung nicht mit Feder 4. Dank this post Arbeit habe ich gemacht besonders alle Arbeit, aber der Autor nicht erwähnt, dass:Wie integriere ich SLF4J Logging mit Spring 4?
Die obligatorische Protokollierung Abhängigkeit im Frühjahr ist die Jakarta Commons Logging API (JCL)
(http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/htmlsingle/).
Es bedeutet, dass, wenn wir slf4j wollen arbeiten WEcommons-logging AUSGESCHLOSSEN MUSS unseren Classpath (oder pom.xml wenn Maven verwenden). Bei der Verwendung von maven wählt spring-core automatisch Commons-Logging aus. (Ich habe das verstanden, wenn der Befehl "mvn dependency: tree" ausgeführt wurde).
Schritte zum Reproduzieren:
ausschließen commons-Protokollierung von Federkern
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
zum pom.xml nächsten Abhängigkeiten hinzufügen:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.19</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.19</version> </dependency>
erstellen log4j2 .xml-Datei wie folgt (wenn Log4j2 durch slf4j protokolliert werden soll).
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="CONSOLE" /> </Root> <logger level="info" additivity="false" name="org.springframework.security"> <AppenderRef ref="CONSOLE" /> </logger> <logger level="info" additivity="false" name="org.springframework.web"> <AppenderRef ref="CONSOLE" /> </logger> <logger level="warn" additivity="false" name="controllers"> <AppenderRef ref="CONSOLE" /> </logger> </Loggers> </Configuration>
Schreibprotokollmeldungen in Ihren Klassen:
private final Logger logger =LoggerFactory.getLogger(this.getClass()); logger.debug("This is a debug message"); logger.info("This is an info message");
mit @rgoers zustimmen. Es funktioniert gut! –