Spring Boot: Wie kann ich die Protokollierungsebene mit application.properties einstellen?

Dies ist eine sehr einfache Frage, aber ich kann keine Informationen finden.
(Vielleicht sind meine Kenntnisse über Java-Frameworks sehr lückenhaft)

Wie kann ich die Protokollierungsebene mit application.properties einstellen?
Und den Speicherort der Protokollierungsdatei, etc?

Kommentare zu der Frage (1)
Lösung

Update: Ab Spring Boot v1.2.0.RELEASE gelten die Einstellungen in application.properties oder application.yml. Siehe den Abschnitt [Log Levels] (http://docs.spring.io/spring-boot/docs/1.2.1.RELEASE/reference/htmlsingle/#boot-features-custom-log-levels) des Referenzhandbuchs.

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

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

Sie können die Debug-Protokollierung aktivieren, indem Sie --debug angeben, wenn Sie die Anwendung über die Kommandozeile starten.

Spring Boot bietet auch einen netten Ausgangspunkt für logback, um einige Voreinstellungen, Farbgebung usw. zu konfigurieren, die base.xml Datei, die Sie einfach in Ihre logback.xml Datei einfügen können. (Dies wird auch von der Standard-logback.xml in Spring Boot empfohlen.

Kommentare (7)

Sie können dies über Ihre application.properties tun.

logging.level.=ERROR -> Setzt den Root-Logging-Level auf Error
...
logging.level.=DEBUG -> Setzt den Root-Logging-Level auf DEBUG

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

Ein vernünftiger Standardsatz von application.properties bezüglich der Protokollierung 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 in Ihrer bevorzugten IDE entwickeln, fügen Sie einfach ein -Dspring.profiles.active=dev als VM-Argument in die Run/Debug-Konfiguration Ihrer Anwendung ein.

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

Kommentare (6)

Der richtige Weg, den root Logging-Level zu setzen, ist die Verwendung der Eigenschaft logging.level.root. Siehe [Dokumentation][1], die aktualisiert wurde, seit diese Frage ursprünglich gestellt wurde.

Beispiel:

logging.level.root=WARN

[1]: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-custom-log-levels

Kommentare (0)

Angenommen, Ihre Anwendung hat den Paketnamen com.company.myproject. Dann können Sie die Protokollierungsstufe für Klassen innerhalb Ihres Projekts wie unten in den application.properties-Dateien angegeben einstellen

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUG und logging.level.org.hibernate = DEBUG setzen die Protokollierungsstufe nur für Klassen des Spring-Frameworks web und Hibernate.

Um den Speicherort der Protokolldatei festzulegen, verwenden Sie

logging.file = /home/ubuntu/myproject.log

Kommentare (0)

Wenn Sie Spring Boot verwenden, können Sie direkt folgende Eigenschaften in der Datei application.properties hinzufügen, um die Protokollierungsstufe festzulegen, Protokollierungsmuster anzupassen und Protokolle in der externen Datei zu speichern.

Dabei handelt es sich um verschiedene Protokollierungsebenen und ihre Reihenfolge vom Minimum << Maximum.

Aus << Maximum; FATAL << < FEHLER << < WARNEN << < INFO <<< DEBUG <<< TRACE <<< ALLE

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

Bitte gehen Sie durch diesen Link, um Ihr Protokoll anschaulicher zu gestalten.

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

Kommentare (1)

Der Tipp von Dave Syer ist wichtig, denn durch Hinzufügen von debug=true zu application.properties wird die Debug-Protokollierung tatsächlich aktiviert.

Kommentare (0)

Für den Fall, dass Sie ein anderes Protokollierungs-Framework verwenden wollen, z.B. log4j, ist es meiner Meinung nach am einfachsten, die eigene Protokollierung von Springboots zu deaktivieren und eine eigene zu implementieren. Auf diese Weise kann ich jede Protokollierungsebene innerhalb einer Datei, log4j.xml (in meinem Fall), konfigurieren.

Um dies zu erreichen, müssen Sie einfach diese Zeilen zu Ihrer pom.xml hinzufügen:


    org.springframework.boot
    spring-boot-starter-web



    org.springframework.boot
    spring-boot-starter


            org.springframework.boot
            spring-boot-starter-logging




    org.springframework.boot
    spring-boot-starter-log4j

Wahrscheinlich haben Sie bereits die erste Abhängigkeit und benötigen nur die beiden anderen. Bitte beachten Sie, dass dieses Beispiel nur log4j abdeckt. Das'ist alles, jetzt sind Sie'bereit, die Protokollierung für den Bootvorgang innerhalb Ihrer log4j-Konfigurationsdatei zu konfigurieren!

Kommentare (2)

Für die Unterlagen: die [offizielle Dokumentation] (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-logging), wie für Spring Boot v1.2.0.RELEASE und Spring v4.1.3.RELEASE:

Wenn die einzige Änderung, die Sie an der Protokollierung vornehmen müssen, darin besteht, die Pegel der verschiedenen Logger einzustellen, dann können Sie das in application.properties mit Hilfe von "logging.level&quot tun; Präfix, z.B. "logging.level"

logging.level.org.springframework.web: DEBUG

`logging.level.org.hibernate: FEHLER

Sie können auch den Speicherort einer Datei, in die protokolliert werden soll (zusätzlich zur Konsole), mit "logging.file" festlegen.

Um die feineren Einstellungen eines Protokollierungssystems zu konfigurieren, müssen Sie das vom jeweiligen LoggingSystem unterstützte native Konfigurationsformat verwenden. Standardmäßig holt Spring Boot die native Konfiguration von ihrem Standard-Speicherort für das System ab (z.B. classpath:logback.xml für Logback), aber Sie können den Speicherort der Konfigurationsdatei mit Hilfe von "logging.config&quot festlegen; Eigenschaft festlegen.

Kommentare (0)

Wenn Sie mehr Details einstellen möchten, fügen Sie bitte eine Log-Konfigurationsdatei mit dem Namen "logback.xml&quot hinzu; oder "logback-spring.xml".

in Ihre Datei application.properties ein, Eingabe wie folgt:

logging.config: classpath:logback-spring.xml

in der loback-spring.xml, Eingabe wie folgt:

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






                INFO
                ACCEPT
                DENY


            sys.log



                ${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log


                    500MB




                %-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n






                TRACE
                ACCEPT
                DENY


            business.log



                ${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log


                    500MB




                %-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n












Kommentare (0)

Vorhandene Antworten sind großartig. Ich möchte Ihnen nur eine neue Spring-Boot-Funktion vorstellen, mit der Sie Protokolle gruppieren und die Protokollierungsstufe für die gesamte Gruppe festlegen können.

Beispiel aus den Docs :

  • Eine Protokollierungsgruppe erstellen
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • Legen Sie die Protokollierungsebene für die Gruppe fest
logging.level.tomcat=TRACE

Es's nette Funktion, die mehr Flexibilität bringt.

Kommentare (0)

Im Falle einer Eclipse-IDE und Ihr Projekt ist maven, denken Sie daran, das Projekt zu bereinigen und zu bauen, um die Änderungen widerzuspiegeln.

Kommentare (0)

im Spring-Boot-Projekt können wir logging.level.root=WARN schreiben, aber hier ist das Problem, dass wir wieder neu starten müssen, auch wenn wir devtools-Abhängigkeit hinzugefügt haben, in der Eigenschaftsdatei, wenn wir geändert werden, wird jeder Wert nicht automatisch erkannt, für diese Einschränkung habe ich die Lösung kennengelernt, d.h. wir können den Aktor in pom.xml hinzufügen und die Logger-Ebene wie unten im Postman-Client gezeigt übergeben in url bar http://localhost:8080/loggers/ROOT oder http://localhost:8080/loggers/ und im Body können Sie das json-Format wie folgt übergeben

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}
Kommentare (0)