Spring Boot - Protokollierung

Spring Boot verwendet die Apache Commons-Protokollierung für die gesamte interne Protokollierung. Die Standardkonfigurationen von Spring Boot bieten Unterstützung für die Verwendung von Java Util Logging, Log4j2 und Logback. Mit diesen können wir die Konsolenprotokollierung sowie die Dateiprotokollierung konfigurieren.

Wenn Sie Spring Boot Starters verwenden, bietet Logback eine gute Unterstützung für die Protokollierung. Außerdem bietet Logback eine gute Unterstützung für Common Logging, Util Logging, Log4J und SLF4J.

Protokollformat

Das Standardformat für das Spring Boot-Protokoll ist in der folgenden Abbildung dargestellt.

das gibt Ihnen die folgenden Informationen -

  • Date und Time das gibt das Datum und die Uhrzeit des Protokolls an

  • Log level zeigt INFO, ERROR oder WARN

  • Process ID

  • Das --- was ein Trennzeichen ist

  • Thread name ist in eckigen Klammern eingeschlossen []

  • Logger Name das zeigt den Namen der Quellklasse

  • Die Protokollnachricht

Konsolenprotokollausgabe

Die Standardprotokollnachrichten werden im Konsolenfenster gedruckt. Standardmäßig werden die Protokollmeldungen „INFO“, „ERROR“ und „WARN“ in der Protokolldatei gedruckt.

Wenn Sie das Protokoll auf Debug-Ebene aktivieren müssen, fügen Sie beim Starten Ihrer Anwendung das Debug-Flag mit dem folgenden Befehl hinzu:

java –jar demo.jar --debug

Sie können den Debug-Modus auch wie hier gezeigt zu Ihrer Datei application.properties hinzufügen.

debug = true

Dateiprotokollausgabe

Standardmäßig werden alle Protokolle im Konsolenfenster und nicht in den Dateien gedruckt. Wenn Sie die Protokolle in einer Datei drucken möchten, müssen Sie die Eigenschaft festlegenlogging.file oder logging.path in der Datei application.properties.

Sie können den Protokolldateipfad mithilfe der unten gezeigten Eigenschaft angeben. Beachten Sie, dass der Name der Protokolldatei spring.log lautet.

logging.path = /var/tmp/

Sie können den Namen der eigenen Protokolldatei mit der unten gezeigten Eigenschaft angeben -

logging.file = /var/tmp/mylog.log

Note - Dateien werden nach Erreichen der Größe von 10 MB automatisch gedreht.

Protokollebenen

Spring Boot unterstützt alle Logger-Ebenen wie "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF". Sie können den Root-Logger in der Datei application.properties wie folgt definieren:

logging.level.root = WARN

Note- Logback unterstützt kein FATAL-Level-Log. Es wird dem Protokoll der Ebene „ERROR“ zugeordnet.

Logback konfigurieren

Logback unterstützt die XML-basierte Konfiguration für Spring Boot Log-Konfigurationen. Details zur Protokollierungskonfiguration werden in konfiguriertlogback.xmlDatei. Die Datei logback.xml sollte unter dem Klassenpfad platziert werden.

Sie können das ROOT-Level-Protokoll in der Datei Logback.xml mit dem unten angegebenen Code konfigurieren.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

Sie können den Konsolen-Appender in der unten angegebenen Datei Logback.xml konfigurieren.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

Sie können den Dateianhang in der Datei Logback.xml mit dem unten angegebenen Code konfigurieren. Beachten Sie, dass Sie den Protokolldateipfad im Dateianhang angeben müssen.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>

Sie können das Protokollmuster in definieren logback.xmlDatei mit dem unten angegebenen Code. Sie können die unterstützten Protokollmuster auch in der Konsole oder im Dateiprotokoll-Appender mithilfe des folgenden Codes definieren:

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

Der Code für die vollständige Datei logback.xml ist unten angegeben. Sie müssen dies in den Klassenpfad einfügen.

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>
   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>

Der folgende Code zeigt, wie der slf4j-Logger in die Spring Boot-Hauptklassendatei eingefügt wird.

package com.tutorialspoint.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
   
   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}

Die Ausgabe, die Sie im Konsolenfenster sehen können, wird hier angezeigt -

Die Ausgabe, die Sie in der Protokolldatei sehen können, wird hier angezeigt -