web-dev-qa-db-fra.com

Spring Boot: Comment définir le niveau de journalisation avec application.properties?

C'est une question très simple, mais je ne peux pas trouver d'information.
(Peut-être que mes connaissances sur les frameworks Java font cruellement défaut)

Comment définir le niveau de journalisation avec application.properties?
Et la journalisation de l’emplacement du fichier, etc?

243
zeodtr

Mise à jour: À partir de Spring Boot v1.2.0.RELEASE, les paramètres de application.properties ou application.yml s'appliquent. Voir le section Niveaux de journalisation du guide de référence.

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

Pour les versions antérieures de Spring Boot, vous ne pouvez pas. Vous devez simplement utiliser la configuration normale de votre infrastructure de journalisation (log4j, logback) pour cela. Ajoutez le fichier de configuration approprié (log4j.xml ou logback.xml) dans le répertoire src/main/resources et configurez-le à votre guise.

Vous pouvez activer la journalisation de débogage en spécifiant --debug lors du démarrage de l'application à partir de la ligne de commande.

Spring Boot fournit également un bon point de départ pour la journalisation afin de configurer certaines valeurs par défaut, la coloration, etc. le fichier base.xml que vous pouvez simplement inclure dans votre fichier logback.xml. (Ceci est également recommandé à partir de la valeur par défaut logback.xml dans Spring Boot.

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

Vous pouvez le faire en utilisant votre application.properties.

logging.level.=ERROR -> Définit le niveau de journalisation racine sur error
...
logging.level.=DEBUG -> Définit le niveau de journalisation racine sur DEBUG

logging.file=${Java.io.tmpdir}/myapp.log -> Définit le chemin d'accès absolu du fichier journal à TMPDIR/myapp.log

Un ensemble sain par défaut de application.properties concernant la journalisation à l’aide de profils serait: 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=

Lorsque vous développez dans votre IDE favori _, vous ajoutez simplement un -Dspring.profiles.active=dev en tant qu'argument VM à la configuration d'exécution/de débogage de votre application.

Cela vous donnera une erreur uniquement lors de la journalisation de la production et du débogage pendant le développement SANS écrire la sortie dans un fichier journal. Cela améliorera les performances pendant le développement (et économisera quelques heures de fonctionnement des lecteurs SSD;)).

92
Richard

La méthode appropriée pour définir le niveau de journalisation racine consiste à utiliser la propriété logging.level.root. Voir documentation , qui a été mis à jour depuis que cette question a été posée à l'origine.

Exemple:

logging.level.root=WARN

Supposons que votre application porte le nom de package com.company.myproject. Ensuite, vous pouvez définir le niveau de journalisation des classes de votre projet, comme indiqué ci-dessous dans les fichiers application.properties.

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUG et logging.level.org.hibernate = DEBUG vont définir le niveau de journalisation pour les classes de Spring framework web et Hibernate uniquement.

Pour définir l'emplacement du fichier de journalisation, utilisez

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

13
shaunthomas999

Assurez-vous que le conseil de Dave Syer suscite un peu d'amour, car l'ajout de debug=true à application.properties va effectivement permettre la journalisation du débogage.

10
oravecz

Si vous êtes sur Spring Boot, vous pouvez directement ajouter les propriétés suivantes dans le fichier application.properties pour définir le niveau de journalisation, personnaliser le modèle de journalisation et stocker les journaux dans le répertoire. fichier externe.

Ce sont différents niveaux de journalisation et son ordre de minimum << maximum.

OFF << FATAL << ERREUR << AVERTISSEMENT << 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"

Merci de passer par ce lien pour personnaliser votre journal de manière plus vivante.

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

9
Hardik Patel

Si vous souhaitez utiliser une autre structure de journalisation, log4j par exemple, la solution la plus simple consiste à désactiver la journalisation propre et d'implémenter la vôtre. De cette façon, je peux configurer chaque niveau de log dans un fichier, log4j.xml (dans mon cas).

Pour ce faire, vous devez simplement ajouter ces lignes à votre fichier pom.xml:

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

Vous avez probablement déjà la première dépendance et n'avez besoin que des deux autres. Veuillez noter que cet exemple ne concerne que log4j.
C'est tout, vous êtes maintenant prêt à configurer la journalisation pour le démarrage dans votre fichier de configuration log4j!

8
atripes

Pour les enregistrements: le documentation officielle , comme pour Spring Boot v1.2.0.RELEASE et Spring v4.1.3.RELEASE:

Si la seule modification à apporter à la consignation consiste à définir les niveaux de divers consignateurs, vous pouvez le faire dans application.properties en utilisant le préfixe "logging.level", par exemple.

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

Vous pouvez également définir l'emplacement d'un fichier sur lequel vous connecter (en plus de la console) à l'aide de "logging.file".

Pour configurer les paramètres plus détaillés d'un système de journalisation, vous devez utiliser le format de configuration natif pris en charge par le système de journalisation en question. Par défaut, Spring Boot sélectionne la configuration native de son emplacement par défaut pour le système (par exemple, classpath: logback.xml pour Logback), mais vous pouvez définir l'emplacement du fichier de configuration à l'aide de la propriété "logging.config".

3
Eric Platon

Si vous souhaitez définir davantage de détails, veuillez ajouter un nom de fichier de configuration de journal "logback.xml" ou "logback-spring.xml".

dans votre fichier application.properties, entrez comme ceci:

logging.config: classpath:logback-spring.xml

dans le fichier loback-spring.xml, entrez comme ceci:

    <?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

Dans le cas d’Eclipse IDE et que votre projet est maven, n’oubliez pas de nettoyer et de construire le projet pour refléter les modifications.

1
Sabarish Kumaran.V

Les réponses existantes sont excellentes. Je souhaite simplement partager avec vous une nouvelle fonctionnalité de démarrage printanier permettant de regrouper les journaux et de définir le niveau de journalisation sur l'ensemble du groupe.

Exemple tiré de la documentation:

  • Créer un groupe de journalisation
logging.group.Tomcat=org.Apache.catalina, org.Apache.coyote, org.Apache.Tomcat
  • Définir le niveau de journalisation pour le groupe
logging.level.Tomcat=TRACE

C'est une fonctionnalité intéressante qui apporte plus de flexibilité.

1
Martin Choraine

dans le projet de démarrage du printemps, nous pouvons écrire logging.level.root = WARN, mais le problème est que nous devons redémarrer même si nous avons ajouté la dépendance devtools. la solution i, e, nous pouvons ajouter un actionneur dans pom.xml et passer le niveau d’enregistreur comme indiqué ci-dessous dans le client postman dans la barre d’URL http: // localhost: 8080/loggers/ROOT ou http: // localhost: 8080/loggers / et dans le corps, vous pouvez passer le format json comme ci-dessous

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

}
0