Ich habe fast zwei Tage lang meinen Kopf gegen die Wand geschlagen und habe alle Vorschläge, die ich in den Antworten auf einige Fragen gefunden habe, ohne jede Freude ausprobiert. Spring scheint ordnungsgemäß zu protokollieren, aber nichts wird von meinen Anwendungsklassen protokolliert. Ich benutze Spring Boot 1.5.3 und baue eine App, die log4j verwendet und in einem Tomcat-Container ausgeführt wird (also nicht den eingebetteten Tomcat-Container von Spring). Hier sind die Abhängigkeiten, die in meiner ursprünglichen pom.xml waren:Warum protokollieren meine Klassen nicht, aber Spring protokolliert (Spring Boot mit Maven und log4j)?
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</exclusion>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<artifactId>log4j-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
Ich versuchte, die vorgeschlagene Lösung von @ M.Deinum ohne Änderung Ergebnis: Frühling erfolgreich angemeldet, meine Klassen nicht. Die pom.xml in diesem Fall sah wie folgt aus:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
Ich habe die folgende Konfigurationsdatei an der Wurzel meiner app Klassenpfad:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework.beans.factory" level="DEBUG"/>
<Root level="DEBUG">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Die Abhängigkeiten zur Zeit in meinem pom.xml sind nur Das Neueste in einer langen Reihe von Permutationen, die ich ausprobiert habe, mit Code aus der Spring Framework Referenz 4.3.8.RELEASE und mehreren Fragen, die hier auf stackoverflow beantwortet wurden.
Zeigen Sie Ihre Klassenstufe Logging Beispiel zusammen mit Logger Initialisierung – Zico
entfernen die alle ohne (nur ausschließen' Feder-boot-logging') und fügen Sie (dann Sie erhalten eine unterstützte und gemanagte Version –
@Zico Ich bin mir nicht sicher, ob das Ihre Frage beantwortet, aber meine Klassen importieren 'org.apache.logging.log4j.LogManager' und' org.apache.logging.log4j.Logger'. Klassen (die alle Singleton-Spring-Beans sind) erstellen 'private statische finale Loggerlogger = LogManager.getLogger (ThisClass.class);' und versuchen, durch Aufruf von 'logger.debug zu loggen (" etwas Text, der niemals in die Logdatei geschrieben wird ")) '. – Thom