2017-08-04 1 views
0

Ich verwende Logback in meiner Spring-Boot-Anwendung.Logback kann nicht in Konsole schreiben

Das Problem ist logback nicht die Logger-Nachrichten in 'Eclipse' Konsole für meine beiden 2 Pakete dao und Web drucken.

Die Protokolldatei wird ohne Probleme geschrieben, und meine Loggermeldungen drucken.

Ich bin die Wurzel, also sollte ich wahrscheinlich meine Logger-Nachrichten in meiner Konsole sehen.

  • logger.info ("Seite X INFO");
  • logger.debug ("Seite X Debug");

Hier ist meine logback.xml Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <!-- Send debug messages to System.out --> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <!-- Send debug messages to a file at "C:/logs/Log.log" --> 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>C:/logs/Log.log</file> 
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <Pattern>%d{yyyy-MM-dd_HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> 
     </encoder> 

     <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
      <FileNamePattern>C:/logs/Log.%i.log.zip</FileNamePattern> 
      <MinIndex>1</MinIndex> 
      <MaxIndex>10</MaxIndex> 
     </rollingPolicy> 

     <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
      <MaxFileSize>10MB</MaxFileSize> 
     </triggeringPolicy> 
    </appender> 

    <logger name="package.web" level="INFO" > 
      <appender-ref ref="FILE" /> 
    </logger> 
    <logger name="package.dao" level="DEBUG" > 
      <appender-ref ref="FILE" /> 
    </logger> 

    <!-- By default, the level of the root level is set to DEBUG --> 
    <root level="DEBUG"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 
+1

Wie bekommen Sie die Logger? 'LoggerFactory.getLogger (Classname.class)' oder explizit 'getLogger (" package.web ")'? – Fildor

+0

Ich benutze dies: private final Logger Logger = LoggerFactory.getLogger (this.getClass()); und dann schreibe ich meine Nachricht wie logger.info ("Page X INFO"); – NeptuneZ

+1

Sie können stattdessen versuchen, 'getLogger (WhatEverClassName.class)' 'zu verwenden. Wenn du Dupe-Einträge erhältst, entferne die Appender Refs aus der Logger-Konfiguration. Wie ich in meinem Update schreibe, würde ich erwarten, dass die Appender von root geerbt werden. Sie können auch das 'private final static' machen, welches das empfohlene Muster ist. – Fildor

Antwort

2
<logger name="package.web" level="INFO" > 
     <appender-ref ref="FILE" /> 
</logger> 

Sie müssen die Konsole appender hinzuzufügen.

<logger name="package.web" level="INFO" > 
     <appender-ref ref="FILE" /> 
     <appender-ref ref="STDOUT" /> 
</logger> 

UPDATE: Ich lese gerade die Logback-Konfiguration Doku. Diese beiden sollten beide Appender von root erben. Also, was Sie versuchen können, ist keine Appender-Ref auf diese zu spezifizieren und zu sehen, was passiert. Wenn keine Ausgabe in die Datei geschrieben wird, dann auch nicht - dann ist da etwas ziemlich Seltsames. Ich würde dieses Verhalten erwarten, wenn das Additivitäts-Flag auf "false" gesetzt wäre. Aber der Standardwert ist Appender Akkumulation.

+0

Es funktioniert, wie Sie sagten, sie sollten von Root erben. * Danke * – NeptuneZ

+0

Mein letzter Code ist: \t \t \t \t \t \t \t \t \t \t \t NeptuneZ

Verwandte Themen