Dans les applications Java, les journaux sont généralement divisés en 5 niveaux suivants:
Spring Boot utilise la journalisation des communes d'Apache comme cadre de journalisation interne. C'est juste une interface de journal. Dans les applications réelles, il est nécessaire de spécifier l'implémentation du journal correspondant pour cette interface.
L'implémentation du journal par défaut de Springbt est Java Util Logging, qui est un package de journal intégré à JDK. En outre, Springbt prend également en charge les implémentations de journaux très populaires telles que Log4j et Logback.
Les implémentations de journal ci-dessus sont collectivement appelées camers journaux
Passons-le ci-dessous!
Utilisation du plugin de journalisation de démarrage Spring
Ajoutez d'abord une configuration au fichier application.properties:
logging.level.root = info
Le code du contrôleur est le suivant:
package com.hansonwang99.Controller; import com.hansonwang99.k8sresctrlapplication; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.web.bind.annotation.getmapping; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.restController; @ restController @ requestmapping ("/ testlogging") public LoggingTestController {Private Static Logger = LoggerFactory.getLogger (K8SRESCTRLAPPLICATION.CLASS); @GetMapping ("/ Hello") String public hello () {logger.info ("Test Logging ..."); retourner "bonjour"; }}Résultats en cours d'exécution
Étant donné que le niveau de journal est défini sur les informations, les informations du journal contenant des informations et ci-dessus seront imprimées
Comme on peut le voir ici, la plupart des journaux d'informations proviennent du framework Springbt lui-même. Si nous voulons les bloquer, nous pouvons d'abord définir le niveau de journal sur l'erreur, afin que les informations d'informations du framework elle-même ne soient pas imprimées. Définissez ensuite le package spécifique dans l'application sur un journal de niveau de débogage, afin que vous ne puissiez voir que les journaux de niveau de débogage dans le package qui vous préoccupe.
Contrôle le niveau de journal d'un package spécifique
Modifier la configuration dans Application.yml
Journalisation: Niveau: Root: Erreur com.hansonwang99. contrôleur: débogage
Il est évident que le niveau de journal racine est défini sur l'erreur, puis le niveau de journal du package com.hansonwang99.controller est défini sur débogage, ce qui signifie: interdire d'abord tous les paramètres, puis permettant des paramètres individuels.
Code de contrôleur
package com.hansonwang99.Controller; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.web.bind.annotation.gequestmapping; org.springframework.web.bind.annotation.restController; @ restController @ requestmapping ("/ testLogging") public class loggingTestController {private logger logger = loggerFactory.getLogger (this.getClass ()); @GetMapping ("/ Hello") String public hello () {logger.info ("Test Logging ..."); retourner "bonjour"; }}Résultats en cours d'exécution
On peut voir que le framework lui-même a tous les journaux d'info cachés et que les journaux du package spécifié sont imprimés avec succès en fonction du niveau.
Les journaux de sortie à un fichier
journalisation: niveau: root: erreur com.hansonwang99. contrôleur: fichier de débogage: $ {user.home} /logs/hello.logRésultats en cours d'exécution
En utilisant la journalisation du démarrage Spring, nous avons constaté que bien que le journal ait été publié dans le fichier, une copie sera toujours imprimée dans la console. Nous avons constaté que l'utilisation org.slf4j.Logger ne peut pas résoudre ce problème
Framework journal Log4J intégré
Ajouter des dépendances dans pom.xml
<dependency> <proupId> org.springframework.boot </proupId> <ArtifActid> printemp-boot-starter-web </ artifactive> <clussions> <exclusion> <proupId> org.springframework.boot </proupId> <Artifactid> Spring-B-B oot-starter-loging </retifactid> </cosclusion> </clusions> </pedigency> <dependency> <proupId> org.springframework.boot </proupid> <etifactid> printemp-boot-starter-lig4j2 </ artifactid> </dependance>
Ajoutez le fichier log4j2.xml dans le répertoire des ressources, le contenu est le suivant:
<? xml version = "1.0" Encoding = "UTF-8"?> <Inconguration> <Anders> <file name = "file" fileName = "$ {sys: user.home} /logs/hello2.log"> <pathlayout path </PENDERS> <GOGERS> <root niveau = "Error"> <appender-ref ref = "file" /> </ root> <logger name = "com.hansonwang99.Controller" niveau = "debug" /> </ggers> </ configuration>L'autre code reste le même
L'exécution du programme a révélé que la console n'a pas de sortie de journal, et il y a du contenu dans le fichier HELO2.log, qui est conforme à nos attentes:
Et le format de journal correspond à la définition de pattern="%d{HH:mm:ss,SSS} %p %c (%L) - %m%n"
Log4J prend plus de pratique
Pom.xml Configuration:
<dependency> <proupId> org.springframework.boot </proupId> <ArtifActid> printemp-boot-starter-web </ artifactive> <clussions> <exclusion> <proupId> org.springframework.boot </proupId> <Artifactid> Spring-B-B oot-starter-loging </retifactid> </cosclusion> </clusions> </pedigency> <dependency> <proupId> org.springframework.boot </proupid> <etifactid> printemp-boot-starter-lig4j2 </ artifactid> </dependance>
Configuration log4j2.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Configuration Status = "Warn"> <properties> <propriété name = "App_name"> Springboot-web </ propriété> <propriété Name = "Log_path"> Logs / $ {app_name} </ Property> </properties> <Speinders> <Console Name = "console" System_ Pattern = "[% d] [% t] [% p] [% l]% m% n" /> </console> <rollingfile name = "rollingfileinfo" filename = "$ {log_path} /info.log" filepattern = "$ {log_path} / $$ {date: yyyy-mm} / info-% d {yyyy-mm-dd} -% i.log.gz"> <filters> <thresholdfilter nevel = "info" /> <thresholdfilter nevelt Pattern = "[% d] [% t] [% p] [% C:% L]% m% n" /> <grasiques> <! - Archive Files quotidiens -> <TimebasedtrigringPolicy interal = "1" modulate = "true" /> <! - Limitez une taille de fichier unique -> <sizebasedtriggertingPolicy size = "2 mb" /> </gogies> <! <DefaulTrolloverstrategy compressionLevel = "0" max = "10" /> </ rollingfile> <rollingfile name = "rollingfilewarn" filename = "$ {log_path} /warn.log" filepattern = "$ {log_path} / $$ {date: yyyy-mm} / warn-% d {yyyy-mm-dd} -% i.log.gz"> <filters> <thresholdfilter nevel = "warn" /> <theresholdfilter lave Pattern = "[% d] [% t] [% p] [% C:% L]% m% n" /> <grasiques> <! - Archive Files quotidiens -> <TimebasedtrigringPolicy interal = "1" modulate = "true" /> <! - Limitez une taille de fichier unique -> <sizebasedtriggertingPolicy size = "2 mb" /> </gogies> <! <DefaulTrolloverstrategy compressionLevel = "0" max = "10" /> </ rollingfile> <rollingfile name = "rollingfileError" filename = "$ {log_path} /error.log" filepattern = "$ {log_path} / $$ {date: yyyy-mm} / error-% d {yyyy-mm-dd} -% i.log.gz"> <thresholdfilter niveau = "error" /> <pathlayout pattern = "[% d] [% t] [% p] [% c:% l]% m% n" <TimebasedTriggerringPolicy interal = "1" modulate = "true" /> <! - Limiter la taille d'un fichier unique -> <sizebasedtriggergPolicy size = "2 Mo" /> </golicies> <! - Limitez le nombre de fichiers par jour -> <faultrolloverstrategy compressionLevel = "0" max = "10" /> </vrage niveau = "info"> <appender-ref ref = "console" /> <appender-ref ref = "rollingFileInfo" /> <appender-ref ref = "rollingfilewarn" /> <appender-ref ref = "rollingFileErr" /> </ root> </ logers> </ configuration>Code du contrôleur:
package com.hansonwang99.Controller; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger; import org.springframework.web.bind.annotation.getmapping. org.springframework.web.bind.annotation.restController; @ restController @ requestMapping ("/ testLogging") public class loggingTestController {private final logger = logManager.GetLogger (this.getClass ()); @GetMapping ("/ Hello") String public hello () {for (int i = 0; i <10_0000; i ++) {logger.info ("Info Execute Index Method"); Logger.Warn ("Warn Execute Index Method"); Logger.Error ("Erreur Exécuter la méthode d'index"); } return "Ma première application Springboot"; }}Résultats en cours d'exécution
Les journaux seront stockés dans différents fichiers en fonction de différents niveaux. Lorsque la taille du fichier journal dépasse 2 m, plusieurs fichiers seront compressés et stockés. Il est recommandé d'ajuster la taille du fichier journal de l'environnement de production à 20-50 Mo.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.