SpringBoot intègre le système de journalisation slf4j

Plateforme auteur :

| RPSC : blog.csdn.net/qq\_4115394…

| Pépites : juejin.cn/user/651387…

| Zhihu : www.zhihu.com/people/1024…

| GitHub : github.com/JiangXia-10…

| Compte public WeChat : 1024 notes

Cet article fait environ 4777 mots, et le temps de lecture estimé est de 11 minutes

avant-propos

En tant que l'une des parties importantes d'un système d'application, le système de journalisation peut nous aider à trouver et à localiser les problèmes en temps opportun s'il y a des problèmes dans l'environnement en ligne du système, afin de résoudre les problèmes, d'assurer une haute disponibilité des services, et réduire les accidents de production. L'importance des logs est donc évidente.

Il existe de nombreux frameworks de journalisation utilisés dans le développement Java, tels que JUL (java.util.logging), log4j, logback, JCL (Jakarta commons-logging), etc. SpringBoot fournit un système de journalisation. SpringBoot choisit la combinaison SLF4J + Logback par défaut. Si vous n'avez pas besoin de passer à d'autres systèmes de journalisation (tels que Log4j2, etc.), aucune configuration redondante n'est requise. LogBack imprimera les journaux sur la console par défaut. Étant donné que les nouveaux projets Spring Boot font généralement référence à spring-boot-starter ou spring-boot-starter-web, et que ces deux dépendances de démarrage incluent déjà des dépendances sur spring-boot-starter-logging, nous n'avons donc pas besoin de dépendances Add supplémentaires.

Ensuite, cet article résume principalement la configuration du journal slf4j intégré à SpringBoot actuellement utilisée dans le projet.

qu'est-ce que slf4j

slf4j, le nom complet est Simple Logging Facade for Java****, qui est un journal de façade simple . Il s'agit d'une spécification, d'une norme et d'une interface formulées pour tous les frameworks de journalisation, et non d'une implémentation spécifique d'un framework, et il ne sert que divers systèmes de journalisation.

slf4j fournit une interface unifiée pour l'enregistrement des journaux et résume l'implémentation spécifique de différents systèmes de journal, tant qu'il enregistre selon la méthode fournie, le format de journal final, le niveau d'enregistrement, la méthode de sortie, etc. sont liés à des systèmes de journal spécifiques pour remplir. Si slf4j est utilisé pour enregistrer les journaux dans le projet et que log4j est lié (la dépendance du package jar correspondant est configurée dans pom. Remplacez simplement le package jar log4j par logback, et il n'est pas du tout nécessaire de modifier le code du fichier journal .

Comme mentionné précédemment, SpringBoot choisit par défaut la combinaison SLF4J + Logback.Si vous n'avez pas besoin de passer à d'autres systèmes de journalisation, vous pouvez l'utiliser sans configuration redondante. Examinons d'abord l'utilisation la plus simple, comme suit, introduisons la journalisation Logger dans la classe de démarrage et voyons les résultats du journal imprimé :

public class SpringbootdemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(SpringbootdemoApplication.class);
    public static void main(String[] args) {
        logger.info("===============项目启动了===============");
        SpringApplication.run(SpringbootdemoApplication.class, args);
        logger.info("===============启动成功了===============");
    }
}
复制代码

Une fois le projet démarré avec succès, les informations du journal de la console sont les suivantes :

La méthode principale ici est getLogger(xxxxxxx.class) de LoggerFactory. Cette méthode consiste à passer la classe actuelle en tant que paramètre d'entrée, et le journal de sortie affichera le nom de classe xxx correspondant. L'avantage d'une telle déclaration est qu'il est pratique de localiser les journaux, et l'écriture précise des informations de classe peut fournir l'efficacité de localiser rapidement les journaux.

Bien que SpringBoot fournisse slf4j, la journalisation doit être configurée en fonction des besoins réels du projet afin de nous aider à mieux l'utiliser.

utiliser slf4j

Étant donné que springboot intègre slf4j par défaut, spring-boot-starter ou spring-boot-starter-web sont généralement référencés dans les nouveaux projets Spring Boot, et ces deux dépendances de démarrage incluent déjà les dépendances spring-boot-starter-logging, il n'y a donc pas besoin pour importer des dépendances supplémentaires dans le fichier pom. Si vous importez à nouveau des dépendances liées à sl4j, plusieurs erreurs de la même dépendance peuvent apparaître.

Ensuite, regardez la configuration appropriée dans le fichier de configuration application.yml. Pour la personnalisation du journal, vous pouvez le configurer dans le fichier de configuration :

image

Par exemple, une partie de ma configuration ici est la suivante :

logging:
#logging.config是用来指定项目启动的时候,读取哪个配置文件,这里指定的是日志配置文件,即子module项目根路径下的 logback.xml文件,该文件是日志的主要配置信息。
  config: /workspace/java/SpringBootWorkSpace/src/main/resources/locbak.xml
 # level用来配置指定包的路径下应用程序的日志记录,及其日志级别。
  level:
    root: info
    com.springboot.springbootdemo.controller: trace
    com.springboot.springbootdemo.service: debug
    com.springboot.springbootdemo.dao: debug
复制代码

logging.level est utilisé pour spécifier le niveau de sortie du journal d'application dans un package spécifique. trace indique que tous les niveaux de sortie de journal sous le package com.springboot.springbootdemo.controller seront trace et imprimera le sql qui exploite la base de données. Définissez-le sur trace pendant le développement pour faciliter la localisation des problèmes. Dans l'environnement de production, définissez ceci log level to Le niveau d'erreur est bon.

Les cinq niveaux de journaux couramment utilisés, de faible à élevé selon la gravité , sont : debug (débogage) < info (message) < warn (avertissement) < error (erreur) < fatal (erreur grave) . Habituellement, plusieurs d'entre eux peuvent être sélectionnés en fonction de la taille de la granularité réelle requise, et les 4 niveaux de débogage, d'information, d'avertissement et d'erreur sont couramment utilisés.

Le développement réel doit formuler le contenu du fichier de configuration du journal, de sorte qu'une fois le système en cours d'exécution, les informations de journalisation spécifiées dont nous avons besoin puissent être générées en fonction des exigences personnalisées. Vous pouvez ajouter un fichier de configuration locbak.xml sous le dossier de ressources et définir le chemin de configuration (doit être un chemin absolu) dans le fichier de configuration application.yml comme ci-dessus. Les détails du fichier de configuration logback.xml sont les suivants :

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="/SpringBootWorkSpace/SpringBootWorkSpace/logs"/>    <!-- 定义日志格式  -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/SpringBootWorkSpace-Slf4j_%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 日志输出级别 -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="root" level="INFO"/>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>
复制代码

Dans logback.xml, vous pouvez définir le format de sortie du journal, le chemin, le format de sortie de la console, la taille du fichier, la durée de stockage, etc. En fait, ces fichiers peuvent également être configurés dans le fichier de configuration application.yml, tels que :

logging:
# 日志文件最大的大小
  file:
    max-size: 10MB
   # 日志文件保留天数
    max-history: 7
复制代码

Une fois la configuration ci-dessus terminée, le projet de démarrage générera le fichier journal correspondant en fonction de la configuration sous le chemin de stockage du journal configuré dans le fichier de configuration logback.xml, comme suit :

image.png

image.png

Résumer

La fonction puissante du système de journalisation est un outil utile pour notre développement quotidien et la maintenance du système pour dépanner et résoudre les problèmes. Par conséquent, la configuration d'un système de journalisation raisonnable en fonction de notre projet actuel nous aidera à mieux développer et maintenir le système de projet !

Si vous avez des questions ou des erreurs, bienvenue pour communiquer, discuter et apprendre ensemble !

Le code source de ce projet est à:

github.com/JiangXia-10…

Bienvenue à télécharger, Star !

proposition connexe :

Je suppose que tu aimes

Origine blog.csdn.net/qq_41153943/article/details/124896505
conseillé
Classement