2017-06-13 3 views
0

Ich versuche Spring Boot arbeiten mit Logback zu bekommen und bin in einem Fehler/Problem, dass ich nicht herausfinden kann.Spring Boot App Probleme mit logback.groovy Config-Datei

Um dieses Problem vollständig zu reproduzieren, ich Spring Boot Example repo auf GitHub erstellt, aber im Wesentlichen, das ist mein application.yml:

logging: 
    config: 'logback.groovy' 
server: 
    port: 9200 
    error: 
    whitelabel: 
     enabled: false 

Und mein logback.groovy:

statusListener(OnConsoleStatusListener) 

def LOG_PATH = '/opt/springbootexample/logs/springbootexample' 

appender('CONSOLE', ConsoleAppender) { 
    encoder(PatternLayoutEncoder) { 
     pattern = '%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n' 
    } 
} 

appender('FILE', FileAppender) { 
    file = "${LOG_PATH}.log" 
    encoder(PatternLayoutEncoder) { 
     pattern = '%msg%n' 
     outputPatternAsHeader = true 
    } 
} 

appender('ROLLING', RollingFileAppender) { 
    encoder(PatternLayoutEncoder) { 
     Pattern = '%d %level %thread %mdc %logger - %m%n' 
    } 
    rollingPolicy(TimeBasedRollingPolicy) { 
     fileNamePattern = "${LOG_PATH}-%d{yyyy-MM}.zip" 
     maxHistory = 30 
     totalSizeCap = '1KB' 
    } 
} 

root(INFO, ["CONSOLE", "ROLLING"]) 

ich sicher gemacht habe dass /opt/springbootexample/logs existiert Ich lief chmod -R 777 /opt/springbootexample so meine Spring Boot App sollte kein Problem haben, erstellen Sie dort Log-Dateien und Schreiben an sie.

Wenn ich die App lokal ausführen, erhalte ich keine Fehler/Ausnahmen/Warnungen; In der Konsolenausgabe sieht alles ganz gut aus. Ich feuere dann einen Browser an und deute auf http://localhost:9200, der eine einfache Dummy-Nachricht zurückgeben soll, aber nichts passiert. Schlimmer noch, es passiert auch nichts in der Konsole.

Der einzige Hinweis ist, dass, nachdem ich die App heruntergefahren habe, wenn ich /opt/springbootexample/logs/springbootexample.log gehen, ihr Inhalt ist:

#logback.classic pattern: %msg%n 

Was mir sagt, dass vielleicht ist es falsch konfiguriert etwas in meinem logback.groovy ‚s FileAppender vielleicht ? Irgendwelche Ideen/Gedanken?

Antwort

1

Ihre Anwendung funktioniert (Webseite wird korrekt geladen und zeigt "Grüße von Spring Boot!"), Ihre Logging-Konfiguration ist nur ein wenig wackelig.

Das erste Problem ist, dass Sie vergessen haben, den nicht laufenden Datei Appender zu Ihrem Root-Logger hinzuzufügen. Fügen Sie einfach "FILE" in die Liste am unteren Rand des logback.groovy wie so:

root(INFO, ["FILE", "CONSOLE", "ROLLING"]) 
//   ^^^^^^^ 

und das Protokoll funktioniert. Ohne dies wird der Appender initialisiert, die Datei mit dem "seltsamen Header" erstellt (weil Sie outputPatternAsHeader = true verwenden), und nichts wird jemals angehängt, weil Sie nicht gewählt haben.

So ist die einzige seltsame Frage ist, warum die Web-Seite für Sie nicht geladen werden ... Aber vielleicht werden Sie mehr Informationen erhalten, wenn das Protokoll funktioniert :)

Probieren Sie etwas viel einfacher für LOG_PATH, wie def LOG_PATH = '/tmp/foo' , denn wenn das falsch ist, wird der Server heruntergefahren, und offensichtlich wird die Seite nicht geladen.

Wenn der Pfad auf etwas verweist, das existiert und beschreibbar ist, wird es funktionieren.