Maison  >  Article  >  Java  >  Comment configurer le cadre de journalisation de connexion Springboot

Comment configurer le cadre de journalisation de connexion Springboot

WBOY
WBOYavant
2023-05-11 10:46:191124parcourir

Logback peut configurer les journaux à la fois via le fichier de configuration de l'application et via logback-spring.xml. Normalement, il suffit d'utiliser le fichier de configuration global application.yml ou les propriétés pour la configuration. Si vos exigences de sortie de journal sont particulièrement complexes et personnalisées, vous pouvez envisager d'utiliser la méthode de configuration logback-spring.xml.

1. Le fichier de configuration de l'application implémente la configuration du journal

Nous pouvons configurer le journal dans le fichier application.properties(yml)

logging:
  level:
    root: info
    com.zimug.boot.launch.controller: debug
  file:
    path: D:\logs
    name: D:\logs\boot-launch.log
    max-size: 10MB
    max-history: 10
  pattern:
    console: '%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)'
    file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n'
  • logging.level.root=infoSpécifiez l'ensemble du système. le niveau de journalisation par défaut est info, le niveau de journalisation est unifiélogging.level.root=info指定整个系统的默认日志级别是info,日志级别统一化

  • logging.level.com.zimug.boot.launch.controller=debug,指定某个特定的package的日志级别是debug,日志级别个性化。优先级角度,个性配置大于统一配置。

  • logging.file.path将日志输出到指定目录,如果不指定

  • logging.file.name,日志文件的默认名称是spring.log。配置了logging.file.name之后,logging.file.path配置失效。

  • 无论何种设置,Spring Boot都会自动按天分割日志文件,也就是说每天都会自动生成一个新的log文件,而之前的会自动打成GZ压缩包。# 日志文件大小

  • 可以设置logging.file.max-size=10MB分割的每个日志的文件最大容量,超过这个size之后日志继续分隔。

  • 可以设置保留的日志时间logging.file.max-history=10,以天为单位

  • logging.pattern.file输出到文件中的日志的格式

  • logging.pattern.console控制台输出日志的格式,为了在控制台调试时候显示效果更清晰,为日志增加了颜色。red、green等等

日志格式占位符

配合这张图,看一下占位符和logging.pattern.console

springboot logback日志框架怎么配置logging.level.com.zimug.boot.launch.controller=debug, spécifie que le niveau de journalisation d'un package spécifique est debug, Personnalisation du niveau de journalisation. Du point de vue des priorités, une configuration personnalisée est supérieure à une configuration unifiée.

  • logging.file.path génère le journal dans le répertoire spécifié Si

  • logging.file.name n'est pas spécifié, le nom par défaut du. Le fichier journal est Spring .log. Après avoir configuré logging.file.name, la configuration logging.file.path devient invalide.

  • Quel que soit le paramètre, Spring Boot divisera automatiquement le fichier journal par jour, ce qui signifie qu'un nouveau fichier journal sera automatiquement généré chaque jour et le précédent sera automatiquement emballé dans un package compressé GZ. # Taille du fichier journal

  • Vous pouvez définir la taille maximale du fichier de chaque journal divisée par logging.file.max-size=10 Mo. après avoir dépassé cette taille.

  • Vous pouvez définir la durée de conservation du journal logging.file.max-history=10, en jours

  • logging.pattern.file sortie dans un fichier Le format du journal de connexion

logging.pattern.console est le format du journal de sortie de la console Afin d'afficher l'effet plus clairement lors du débogage de la console, des couleurs sont ajoutées au journal. rouge, vert, etc.

Espace réservé au format de journal

Avec cette image, jetons un coup d'œil à la relation entre les espaces réservés et la configuration du format logging.pattern.console

  • %d{HH:mm:ss.SSS} : Heure de sortie du journal (rouge)
  • %thread : Le nom du processus du journal de sortie, très utile dans les applications Web et le traitement des tâches asynchrones (vert)
  • %-5level : niveau de journalisation, et utilisez 5 caractères pour aligner à gauche (surligner en bleu)

%logger : le nom de la classe de sortie du journal (boldMagenta gras magenta)

%msg : message de journalisation ( cyan bleu-vert)

%n : Caractère de nouvelle ligne de la plate-forme
  • 2. Utilisez logback-spring.xml pour implémenter la configuration du journal
  • 2.1 Exigences

    Généralement, utilisez le fichier de configuration global application.yml Ou les propriétés. pour la configuration est suffisant. Si vos exigences de sortie de journal sont particulièrement complexes, vous pouvez envisager d'utiliser la méthode de configuration logback-spring.xml.

spring boot utilise son propre logback pour imprimer les journaux et imprimer dans plusieurs environnements :

🎜🎜L'environnement de production sort vers la console et les fichiers, un fichier par jour, conservés pendant 30 jours. 🎜🎜🎜🎜L'environnement de développement. sorties vers la console et impression de la sortie SQL (mybatis). L'environnement de production n'imprime pas ces informations. L'environnement de test sort uniquement sur la console. Ne pas sortir dans un fichier🎜🎜🎜🎜🎜Pour imprimer Mybatis SQL, il vous suffit d'ajuster le niveau de journalisation du package utilisé par Mybatis sur DEBUG pour imprimer le SQL. 🎜🎜🎜2.2. Réalisation des exigences🎜🎜Étant donné que logback est le cadre de journalisation par défaut de Spring Boot, il n'est pas nécessaire d'introduire des dépendances maven. Téléchargez simplement logback-spring.xml et placez-le sous resources🎜
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--引入默认的一些设置-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--web信息-->
    <logger name="org.springframework.web" level="info"/>
    <!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_PATH" value="D:/logs/boot-launch"/>
    <!--写入日志到文件的appender-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名,每天一个文件-->
            <FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <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>
    <!--异步写日志到文件-->
    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>500</queueSize>
        <appender-ref ref="FILE"/>
    </appender>
    <!--生产环境:打印控制台和输出到文件-->
    <springProfile name="prod">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="asyncFileAppender"/>
        </root>
    </springProfile>
    <!--开发环境:打印控制台-->
    <springProfile name="dev">
        <!-- 打印sql -->
        <logger name="com.zimug.boot.launch" level="DEBUG"/>
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
    <!--测试环境:打印控制台-->
    <springProfile name="test">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
</configuration>
🎜Configuration du journal asynchrone : 🎜🎜 🎜🎜La valeur par défaut de la taille de la file d'attente des journaux asynchrones est 256, la capacité de la file d'attente des journaux asynchrones. 🎜🎜🎜🎜discardingThreshold : Lorsque la capacité restante de la file d'attente des journaux asynchrones est inférieure à ce seuil, les journaux de niveau TRACE, DEBUG ou INFO seront supprimés. Si vous ne souhaitez pas supprimer le journal (c'est-à-dire le sauvegarder dans son intégralité), vous pouvez le définir sur 0. Mais lorsque la file d'attente est pleine, le journal asynchrone non bloquant deviendra un journal synchrone bloquant. Par conséquent, dans les systèmes ayant des exigences élevées en matière de concurrence simultanée et de faible latence, la politique de suppression DissidingThreshold peut être définie pour les journaux sans importance, avec une valeur supérieure à 0. 🎜🎜🎜🎜2.3. Testez-le🎜🎜Une fois la configuration ci-dessus terminée, vous pouvez utiliser le code suivant pour tester s'il répond aux exigences avancées dans la section 2.1. 🎜
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@RestController
public class LogTestController {
    private static final Logger logger = LoggerFactory.getLogger(LogTestController.class);
    @GetMapping("/testlog")
    public void test(){
        logger.trace("Trace 日志...");
        logger.debug("Debug 日志...");
        logger.info("Info 日志...");
        logger.warn("Warn 日志...");
        logger.error("Error 日志...");
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer