473 Stimmen

Spring Boot: Wie kann ich das Protokollierungsniveau mit application.properties einstellen?

Dies ist eine sehr einfache Frage, aber ich kann keine Informationen finden.
(Vielleicht fehlt es mir an Wissen über Java-Frameworks)

Wie kann ich das Logging-Level mit der Datei application.properties festlegen?
Und den Speicherort der Protokolldatei, usw.?

515voto

M. Deinum Punkte 106454

Aktualisierung: Beginnend mit Spring Boot v1.2.0.RELEASE gelten die Einstellungen in application.properties oder application.yml. Siehe den Log Levels Abschnitt im Referenzhandbuch.

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

Für frühere Versionen von Spring Boot geht das nicht. Sie müssen einfach die normale Konfiguration für Ihr Logging-Framework (log4j, logback) verwenden. Fügen Sie die entsprechende Konfigurationsdatei (log4j.xml oder logback.xml) zum Verzeichnis src/main/resources hinzu und konfigurieren Sie diese nach Ihren Wünschen.

Sie können das Debug-Logging aktivieren, indem Sie --debug beim Starten der Anwendung über die Befehlszeile angeben.

Spring Boot bietet auch einen guten Startpunkt für logback, um einige Standardwerte, Farben usw. zu konfigurieren. Die Datei base.xml können Sie einfach in Ihre logback.xml-Datei einbinden. (Dies wird auch vom Standard logback.xml in Spring Boot empfohlen.

137voto

Richard Punkte 1433

Sie können dies in Ihrer application.properties tun.

logging.level.=ERROR -> Setzt das Root-Logging-Level auf Fehler
...
logging.level.=DEBUG -> Setzt das Root-Logging-Level auf DEBUG

logging.file=${java.io.tmpdir}/myapp.log -> Setzt den absoluten Pfad der Protokolldatei auf TMPDIR/myapp.log

Eine vernünftige Standardeinstellung für application.properties bezüglich des Loggens mit Profilen wäre: application.properties:

spring.application.name=
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

Wenn Sie innerhalb Ihrer Lieblings-IDE entwickeln, fügen Sie einfach ein -Dspring.profiles.active=dev als VM-Argument zur Ausführungs-/Debug-Konfiguration Ihrer App hinzu.

Dadurch erhalten Sie nur Fehlerprotokollierung in der Produktion und Debug-Protokollierung während der Entwicklung, OHNE die Ausgabe in eine Protokolldatei zu schreiben. Dies verbessert die Leistung während der Entwicklung (und spart SSD-Laufwerken einige Betriebsstunden ;)).

104voto

Der richtige Weg, um das root Logging-Level einzustellen, ist die Verwendung der Eigenschaft logging.level.root. Siehe Dokumentation, die seit der ursprünglichen Frage aktualisiert wurde.

Beispiel:

logging.level.root=WARN

39voto

Hardik Patel Punkte 936

Wenn Sie Spring Boot verwenden, können Sie direkt die folgenden Eigenschaften zur application.properties-Datei hinzufügen, um das Protokollierungsniveau festzulegen, das Protokollierungsmuster anzupassen und die Protokolle in eine externe Datei zu speichern.

Dies sind verschiedene Protokollierungsstufen und ihre Reihenfolge von minimalem << maximalem.

OFF << FATAL << ERROR << WARN << INFO << DEBUG << TRACE << ALL

# Um die Protokollierungsstufe nach Bedarf festzulegen.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# Um Protokolle in eine externe Datei zu speichern
# Verwenden Sie unbedingt den vorwärts "/"-Schrägstrich für Windows, Linux oder ein anderes Betriebssystem, sonst funktioniert es nicht.
logging.file=D:/spring_app_log_file.log

# Um das Protokollierungsmuster anzupassen.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

Bitte folgen Sie diesem Link, um Ihr Protokoll noch anschaulicher anzupassen.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

24voto

Laut der Dokumentation können Sie unterschiedliche Protokollierungsstufen basierend auf Java-Paketen haben.

 logging.level.com.mypackage.myproject=WARN
 logging.level.org.springframework=DEBUG
 logging.level.root=INFO 

Dies würde bedeuten, dass

  • Für Ihr benutzerdefiniertes Paket com.mypackage.myproject die Protokollierungsstufe WARN angewendet wird
  • Für das Spring-Framework-Paket org.springframework die Protokollierungsstufe DEBUG angewendet wird
  • Für jedes andere Paket die Protokollierungsstufe INFO angewendet wird

Sie können auch verschiedene Java-Pakete gruppieren und das System anweisen, die gleiche Protokollierungsstufe für alle Pakete der Gruppe in einer einzigen Zeile zu verwenden.

In dem vorherigen Beispiel könnten Sie Folgendes tun

 logging.level.root=INFO 
 logging.level.org.springframework=DEBUG

 logging.group.myCustomGroup = com.mypackage.myproject, com.otherpackage.otherproject, com.newpackage.newproject
 logging.level.myCustomGroup=WARN

Dies würde bedeuten, dass die Pakete

  • com.mypackage.myproject
  • com.otherpackage.otherproject
  • com.newpackage.newproject

alle die Protokollierungsstufe WARN angewendet hätten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X