Deaktivieren der Konsolenprotokollierung in Spring Boot

Deaktivieren der Konsolenprotokollierung beim Spring Boot

1. Überblick

In der Regel bieten Konsolenprotokolle die Möglichkeit, unser System auf einfache und intuitive Weise zu debuggen. Es gibt jedoch Fälle, in denen wir diese Funktion in unserem System nicht aktivieren möchten.

In diesem kurzen Tutorial werdenwe’ll see how to avoid logging to the console when running a Spring Boot application.

Wir werden es einfach halten und anhand von Beispielen auf den Punkt bringen, wie dies erreicht werden kann, unabhängig davon, ob wir Logback, Log4js2 oder sogar das Java Util Logging-Framework verwenden.

Um mehr über die Protokollierung von Frameworks für Spring Boot zu erfahren, empfehlen wir Ihnen, das Tutorial vonLogging in Spring Bootzu lesen.

2. Deaktivieren der Konsolenausgabe für die Rückmeldung

Wenn unser ProjektSpring Boot starters verwendet, wird auch die Abhängigkeit vonspring-boot-starter-logging berücksichtigt.

Dieser spezielle Starter konfiguriertLogback als Standardframework und protokolliert zunächst standardmäßig nur an der Konsole.

Diese Konfiguration kann sein Angepasst durch Hinzufügen einerlogback-spring.xml-Datei zu unseren Ressourcen.

Richten Sie beispielsweise das XML so ein, dass die Konsolenausgabe deaktiviert und nur in einer Datei protokolliert wird:



    
    
    
        
    

Außerdem benötigen wir die Konfigurationseigenschaftlogging.filein unserer Dateiapplication.properties :

logging.file=example-disabled-console.log

Hinweis: Was die Konsolenausgabe hier tatsächlich deaktiviert, ist die Tatsache, dass wir dieconsole-appender.xml in nicht in unsere XML -Datei aufnehmen, sodass auch ein leeresconfiguration-Tag den Trick machen würde.

Alternatively,we can avoid creating the XML file by overriding the default configuration with application properties.

Zum Beispiel können wir möglicherweise dielogging.pattern.console -Eigenschaft verwenden:

logging.pattern.console=

Diese Eigenschaft wird in die SystemeigenschaftCONSOLE_LOG_PATTERNübersetzt, die dann von der Spring-Standardkonsolenkonfiguration verwendet wird.

This approach, of course, isn’t as clean and solid as the previous one. Es ist nicht der beabsichtigte Zweck der Eigenschaft, daher wird dieser "Hack" möglicherweise irgendwann nicht mehr von Logback unterstützt.

Darüber hinaus können wir alle Protokollierungsaktivitäten deaktivieren, indem wir den Wert der Root-Protokollierungsstufe aufOFF setzen:

logging.level.root=OFF

3. So vermeiden Sie die Anmeldung an der Konsole mit Log4j2

Wie wir vielleicht wissen, unterstütztLog4j2 die Formate XML, JSON, YAML oder Eigenschaften, um das Protokollierungsverhalten zu konfigurieren.

Der Einfachheit halber zeigen wir diesmal nur ein einfaches Beispiel für einelog4j2.xml-Datei.

Die anderen Formate berücksichtigen dieselbe Konfigurationsstruktur:


    
        
        
        
    
    
        
            
        
    

Wie beim Logback-Setup ist der Grund, warum das Framework die Protokollierung an der Konsole vermeidet, nicht die Konfiguration "per se", sondern die Tatsache, dass der Root-Logger keinen Verweis auf einen Konsolen-Appender enthält.

4. Deaktivieren der Konsolenprotokollierung für die Java-Util-Protokollierung

Die Java Util-Protokollierung (oder einfach „JUL“) ist derzeit möglicherweise nicht die beliebteste Protokollierungslösung für Spring Boot-Anwendungen.

Auf jeden Fall werden wir analysieren, wie wir Konsolenprotokolle entfernen können, falls das Framework in unserem Projekt vorhanden ist.

Wir müssen lediglich die folgenden Werte zum Standardwertlogging.properties in unserem Ressourcenordner hinzufügen:

handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=example.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

Fügen Sie die Eigenschaftlogging.filein unsere Dateiapplication.properties ein. Jeder Wert wird den Trick machen:

logging.file=true

5. Fazit

Mit diesen kurzen Beispielen können wir jetzt Konsolenprotokolle in unserer Anwendung problemlos deaktivieren, unabhängig davon, welches Protokollierungsframework wir verwenden.

Wie immer finden wir die Implementierungen der Beispiele inour Github repository.