2016-08-10 3 views
0

Ich bin neu in SpringBoot Projekt versuche ich logback-spring.xmlFrühjahr Boot Logging Ausgabe

Logging Abhängigkeiten in meinem Projekt pom.xml Datei zu konfigurieren:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter</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-log4j</artifactId> 
</dependency> 

Konfiguration der Protokollierung in application.proerties:

logging.config=classpath:logback-spring.xml 
logging.level.org.springframework.web=DEBUG 
logging.level.org.hibernate=ERROR 

Wenn ich den Executable-Befehl ausführe, werden Ausnahmen ausgelöst:

SLF4J: Class path contains multiple SLF4J bindings. 
    SLF4J: Found binding in [jar:file:/target/rentacoder.war!/WEB-INF/lib/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
    SLF4J: Found binding in [jar:file:/target/rentacoder.war!/WEB-INF/lib/slf4j-simple-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 
    log4j:WARN Continuable parsing error 2 and column 16 
    log4j:WARN Document root element "configuration", must match DOCTYPE root "null". 
    log4j:WARN Continuable parsing error 2 and column 16 
    log4j:WARN Document is invalid: no grammar found. 
    log4j:WARN The <configuration> element has been deprecated. 
    log4j:WARN Use the <log4j:configuration> element instead. 
    log4j:WARN Unrecognized element include 
    log4j:ERROR Could not create an Appender. Reported error follows. 
    java.lang.ClassNotFoundException: ch.qos.logback.core.FileAppender 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:178) 
     at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:142) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at java.lang.Class.forName0(Native Method) 

Mein logback-spring.xml ist wie folgt:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 
    <logger name="org.springframework.web" level="DEBUG"/> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>myApp.log</file> 
     <encoder> 
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> 
     </encoder> 
    </appender> 

    <logger name="org.apache.velocity" level="OFF" /> 

    <root level="INFO"> 
     <appender-ref ref="FILE" /> 
     <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

Kann jemand etwas Licht in diese? Wie kann ich es reparieren?

Antwort

1

Es gibt ein paar Probleme.

Erstens logback-spring.xml zu benutzen, um Ihre Protokollierung zu konfigurieren, müssen Sie verwenden Logback noch haben Sie spring-boot-starter-logging ausgeschlossen, die Logback für spring-boot-starter-log4j verwendet, die Log4j verwendet. Wenn Sie logback-spring.xml verwenden möchten, sollten Sie den Ausschluss von Ihrem Pom entfernen.

Zweitens bedeutet SLF4J: Found binding in [jar:file:/target/rentacoder.war!/WEB-INF/lib/slf4j-simple-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class], dass Sie auch slf4j-simple auf dem Klassenpfad haben. Ich kann nicht sagen, woher es kommt, da ich die Informationen angegeben habe, die du angegeben hast, aber du musst es aus deinen Abhängigkeiten entfernen. Sie können mvn dependency:tree verwenden, um zu ermitteln, wo es herkommt, und es gegebenenfalls zu entfernen/auszuschließen.

+0

Ich benutze 'mvn Abhängigkeit: Baum' und finde, dass' slf4j-simple' aus Abhängigkeit postgresql ist – haifzhan