Table des matières
1. Le fichier de configuration de l'application implémente la configuration du journal
日志格式占位符
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.
spring boot utilise son propre logback pour imprimer les journaux et imprimer dans plusieurs environnements :
Maison Java javaDidacticiel Comment configurer le cadre de journalisation de connexion Springboot

Comment configurer le cadre de journalisation de connexion Springboot

May 11, 2023 am 10:46 AM
springboot logback

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'
Copier après la connexion
  • 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>
Copier après la connexion
🎜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 日志...");
    }
}
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment Springboot intègre Jasypt pour implémenter le chiffrement des fichiers de configuration Comment Springboot intègre Jasypt pour implémenter le chiffrement des fichiers de configuration Jun 01, 2023 am 08:55 AM

Introduction à Jasypt Jasypt est une bibliothèque Java qui permet à un développeur d'ajouter des fonctionnalités de chiffrement de base à son projet avec un minimum d'effort et ne nécessite pas une compréhension approfondie du fonctionnement du chiffrement. Haute sécurité pour le chiffrement unidirectionnel et bidirectionnel. technologie de cryptage basée sur des normes. Cryptez les mots de passe, le texte, les chiffres, les binaires... Convient pour l'intégration dans des applications basées sur Spring, API ouverte, pour une utilisation avec n'importe quel fournisseur JCE... Ajoutez la dépendance suivante : com.github.ulisesbocchiojasypt-spring-boot-starter2 1.1. Les avantages de Jasypt protègent la sécurité de notre système. Même en cas de fuite du code, la source de données peut être garantie.

Comment SpringBoot intègre Redisson pour implémenter la file d'attente différée Comment SpringBoot intègre Redisson pour implémenter la file d'attente différée May 30, 2023 pm 02:40 PM

Scénario d'utilisation 1. La commande a été passée avec succès mais le paiement n'a pas été effectué dans les 30 minutes. Le paiement a expiré et la commande a été automatiquement annulée 2. La commande a été signée et aucune évaluation n'a été effectuée pendant 7 jours après la signature. Si la commande expire et n'est pas évaluée, le système donne par défaut une note positive. 3. La commande est passée avec succès. Si le commerçant ne reçoit pas la commande pendant 5 minutes, la commande est annulée. 4. Le délai de livraison expire et. un rappel par SMS est envoyé... Pour les scénarios avec des délais longs et de faibles performances en temps réel, nous pouvons utiliser la planification des tâches pour effectuer un traitement d'interrogation régulier. Par exemple : xxl-job Aujourd'hui, nous allons choisir

Comment utiliser Redis pour implémenter des verrous distribués dans SpringBoot Comment utiliser Redis pour implémenter des verrous distribués dans SpringBoot Jun 03, 2023 am 08:16 AM

1. Redis implémente le principe du verrouillage distribué et pourquoi les verrous distribués sont nécessaires. Avant de parler de verrous distribués, il est nécessaire d'expliquer pourquoi les verrous distribués sont nécessaires. Le contraire des verrous distribués est le verrouillage autonome. Lorsque nous écrivons des programmes multithreads, nous évitons les problèmes de données causés par l'utilisation d'une variable partagée en même temps. Nous utilisons généralement un verrou pour exclure mutuellement les variables partagées afin de garantir l'exactitude de celles-ci. les variables partagées. Son champ d’utilisation est dans le même processus. S’il existe plusieurs processus qui doivent exploiter une ressource partagée en même temps, comment peuvent-ils s’exclure mutuellement ? Les applications métier d'aujourd'hui sont généralement une architecture de microservices, ce qui signifie également qu'une application déploiera plusieurs processus si plusieurs processus doivent modifier la même ligne d'enregistrements dans MySQL, afin d'éviter les données sales causées par des opérations dans le désordre, les besoins de distribution. à introduire à ce moment-là. Le style est verrouillé. Vous voulez marquer des points

Comment résoudre le problème selon lequel Springboot ne peut pas accéder au fichier après l'avoir lu dans un package jar Comment résoudre le problème selon lequel Springboot ne peut pas accéder au fichier après l'avoir lu dans un package jar Jun 03, 2023 pm 04:38 PM

Springboot lit le fichier, mais ne peut pas accéder au dernier développement après l'avoir empaqueté dans un package jar. Il existe une situation dans laquelle Springboot ne peut pas lire le fichier après l'avoir empaqueté dans un package jar. La raison en est qu'après l'empaquetage, le chemin virtuel du fichier. n’est pas valide et n’est accessible que via le flux Read. Le fichier se trouve sous les ressources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Comment implémenter Springboot+Mybatis-plus sans utiliser d'instructions SQL pour ajouter plusieurs tables Comment implémenter Springboot+Mybatis-plus sans utiliser d'instructions SQL pour ajouter plusieurs tables Jun 02, 2023 am 11:07 AM

Lorsque Springboot+Mybatis-plus n'utilise pas d'instructions SQL pour effectuer des opérations d'ajout de plusieurs tables, les problèmes que j'ai rencontrés sont décomposés en simulant la réflexion dans l'environnement de test : Créez un objet BrandDTO avec des paramètres pour simuler le passage des paramètres en arrière-plan. qu'il est extrêmement difficile d'effectuer des opérations multi-tables dans Mybatis-plus. Si vous n'utilisez pas d'outils tels que Mybatis-plus-join, vous pouvez uniquement configurer le fichier Mapper.xml correspondant et configurer le ResultMap malodorant et long, puis. écrivez l'instruction SQL correspondante Bien que cette méthode semble lourde, elle est très flexible et nous permet de

Comment SpringBoot personnalise Redis pour implémenter la sérialisation du cache Comment SpringBoot personnalise Redis pour implémenter la sérialisation du cache Jun 03, 2023 am 11:32 AM

1. Personnalisez RedisTemplate1.1, mécanisme de sérialisation par défaut RedisAPI. L'implémentation du cache Redis basée sur l'API utilise le modèle RedisTemplate pour les opérations de mise en cache des données. Ici, ouvrez la classe RedisTemplate et affichez les informations sur le code source de la classe. Déclarer la clé, diverses méthodes de sérialisation de la valeur, la valeur initiale est vide @NullableprivateRedisSe

Comment obtenir la valeur dans application.yml au Springboot Comment obtenir la valeur dans application.yml au Springboot Jun 03, 2023 pm 06:43 PM

Dans les projets, certaines informations de configuration sont souvent nécessaires. Ces informations peuvent avoir des configurations différentes dans l'environnement de test et dans l'environnement de production, et peuvent devoir être modifiées ultérieurement en fonction des conditions commerciales réelles. Nous ne pouvons pas coder en dur ces configurations dans le code. Il est préférable de les écrire dans le fichier de configuration. Par exemple, vous pouvez écrire ces informations dans le fichier application.yml. Alors, comment obtenir ou utiliser cette adresse dans le code ? Il existe 2 méthodes. Méthode 1 : Nous pouvons obtenir la valeur correspondant à la clé dans le fichier de configuration (application.yml) via le ${key} annoté avec @Value. Cette méthode convient aux situations où il y a relativement peu de microservices. Méthode 2 : En réalité. projets, Quand les affaires sont compliquées, la logique

See all articles