it-swarm.com.de

Spring Boot: Wie kann ich die Protokollierungsstufe mit application.properties festlegen?

Dies ist eine sehr einfache Frage, aber ich kann keine Informationen finden.
(Möglicherweise fehlen mir Kenntnisse über Java Frameworks)

Wie kann ich die Protokollierungsstufe mit application.properties festlegen?
Und Speicherort der Protokolldatei usw.?

253
zeodtr

Update: Ab Spring Boot v1.2.0.RELEASE gelten die Einstellungen in application.properties oder application.yml. Siehe den Abschnitt Log Levels des Referenzhandbuchs.

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

Bei früheren Versionen von Spring Boot ist dies nicht möglich. Dazu müssen Sie lediglich die normale Konfiguration für Ihr Protokollierungsframework (log4j, logback) verwenden. Fügen Sie die entsprechende Konfigurationsdatei (log4j.xml oder logback.xml) zum Verzeichnis src/main/resources hinzu und konfigurieren Sie sie nach Ihren Wünschen.

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

Spring Boot bietet auch einen guten Ausgangspunkt für die Rückmeldung, um einige Standardeinstellungen, Farben usw. zu konfigurieren. Die Datei base.xml , die Sie einfach in Ihre Datei logback.xml aufnehmen können. (Dies wird auch von der Standardeinstellung logback.xml in Spring Boot empfohlen.

<include resource="org/springframework/boot/logging/logback/base.xml"/>     
293
M. Deinum

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

logging.level.=ERROR -> Setzt die Root-Protokollierungsstufe auf Fehler
...
logging.level.=DEBUG -> Setzt die Root-Protokollierungsstufe auf DEBUG

logging.file=${Java.io.tmpdir}/myapp.log -> Legt den absoluten Protokolldateipfad auf TMPDIR/myapp.log fest

Ein vernünftiger Standardsatz von application.properties bezüglich der Protokollierung mit Profilen wäre: application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${Java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

Wenn Sie in Ihrem bevorzugten IDE entwickeln, fügen Sie der Run/Debug-Konfiguration Ihrer App einfach ein -Dspring.profiles.active=dev als VM Argument hinzu.

Dies führt dazu, dass während der Entwicklung nur Fehler beim Anmelden in der Produktion und beim Debugging auftreten, OHNE dass die Ausgabe in eine Protokolldatei geschrieben wird. Dies verbessert die Leistung während der Entwicklung (und spart SSD-Laufwerke einige Betriebsstunden;)).

97
Richard

Die richtige Methode zum Festlegen der Root-Protokollierungsstufe ist die Verwendung der Eigenschaft logging.level.root. Siehe Dokumentation , das aktualisiert wurde, seit diese Frage ursprünglich gestellt wurde.

Beispiel:

logging.level.root=WARN

Angenommen, Ihre Anwendung hat den Paketnamen com.company.myproject. Anschließend können Sie die Protokollierungsstufe für Klassen in Ihrem Projekt wie unten in den application.properties-Dateien angegeben festlegen

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUG und logging.level.org.hibernate = DEBUG legen die Protokollierungsstufe nur für Klassen von Spring Framework Web und Hibernate fest.

Verwenden Sie zum Festlegen des Speicherorts der Protokolldatei

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

14
shaunthomas999

Stellen Sie sicher, dass der Tipp von Dave Syer ankommt, da das Hinzufügen von debug=true zu application.properties in der Tat die Debug-Protokollierung ermöglicht.

10
oravecz

Wenn Sie Spring Boot verwenden, können Sie direkt die folgenden Eigenschaften in die Datei application.properties einfügen, um die Protokollierungsstufe festzulegen, das Protokollierungsmuster anzupassen und Protokolle im zu speichern externe Datei.

Dies sind verschiedene Protokollierungsstufen und deren Reihenfolge von Minimum << Maximum.

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

# 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"

Über diesen Link können Sie Ihr Protokoll genauer anpassen.

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

10
Hardik Patel

Für den Fall, dass Sie ein anderes Protokollierungsframework verwenden möchten, z. B. log4j, ist es am einfachsten, die eigene Protokollierung zu deaktivieren und Ihre eigene zu implementieren. Auf diese Weise kann ich jede Google-Ebene in einer Datei konfigurieren, nämlich log4j.xml (in meinem Fall).

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

Sie haben wahrscheinlich 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 können Sie die Protokollierung für den Start in Ihrer log4j-Konfigurationsdatei konfigurieren!

8
atripes

Für die Aufzeichnungen: die offizielle Dokumentation , 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, das Festlegen der Ebenen verschiedener Protokollierer ist, können Sie dies in application.properties unter Verwendung des Präfixes "logging.level" tun, z.

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

Sie können auch den Speicherort einer zu protokollierenden Datei (zusätzlich zur Konsole) mit "logging.file" festlegen.

Um die detaillierteren Einstellungen eines Protokollierungssystems zu konfigurieren, müssen Sie das native Konfigurationsformat verwenden, das vom betreffenden Protokollierungssystem unterstützt wird. Standardmäßig übernimmt Spring Boot die native Konfiguration von ihrem Standardspeicherort für das System (z. B. Klassenpfad: logback.xml für Logback). Sie können den Speicherort der Konfigurationsdatei jedoch über die Eigenschaft "logging.config" festlegen.

3
Eric Platon

Wenn Sie weitere Details festlegen möchten, fügen Sie bitte den Namen der Protokollkonfigurationsdatei "logback.xml" oder "logback-spring.xml" hinzu.

geben Sie in der Datei application.properties Folgendes ein:

logging.config: classpath:logback-spring.xml

geben Sie in der Datei loback-spring.xml Folgendes ein:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


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

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

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


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

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

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

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


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>
1
Sheldon Papa

Denken Sie im Fall von Eclipse IDE und eines Maven-Projekts daran, das Projekt zu bereinigen und zu erstellen, um die Änderungen widerzuspiegeln.

1

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

Beispiel aus den Dokumenten:

  • Erstellen Sie eine Protokollierungsgruppe
logging.group.Tomcat=org.Apache.catalina, org.Apache.coyote, org.Apache.Tomcat
  • Legen Sie die Protokollierungsstufe für die Gruppe fest
logging.level.Tomcat=TRACE

Es ist eine nette Funktion, die mehr Flexibilität bringt.

1
Martin Choraine

im Spring-Boot-Projekt können wir logging.level.root = WARN schreiben, aber hier ist das Problem, dass wir neu starten müssen, auch wenn wir die Abhängigkeit von devtools hinzugefügt haben. In der Eigenschaftendatei kann kein Wert automatisch erkannt werden, da ich diese Einschränkung kenne die lösung i, e wir können aktor in pom.xml hinzufügen und die logger-ebene wie unten im postman client in der url-leiste http: // localhost: 8080/loggers/ROOT oder übergeben http: // localhost: 8080/loggers / und im Hauptteil können Sie das json-Format wie unten übergeben

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

}
0