1. slf4j et log4j2
slf4j est une interface de journal ne peut pas utiliser directement, nécessite une combinaison d'un cadre spécifique utilisé pour réaliser l'exploitation forestière (log4j, logback, log4j2 etc.).
1.1 Pourquoi ne pas simplement utiliser une implémentation spécifique, et la nécessité d'utiliser les interfaces journaux
spécification d'interface définit un journal, vous pouvez avoir différentes implémentation de journalisation, utilisez uniquement le visage de l'interface (paquets de SLF4J sont également utilisés, ne pas utiliser directement le journal pour obtenir un package spécifique), de sorte que les applications sont gratuites cadre la mise en œuvre des changements journal, sans qu'il soit nécessaire de modifier le code correspondant dans le code du journal. En bref: tout changement package jar est mis en œuvre pour vous connecter pas d' impact direct sur les utilisateurs, si le code de service directement en utilisant la mise en œuvre de l' exploitation forestière spécifique, lorsque le journal des modifications pour atteindre, vous devez vous connecter pour modifier les appels liés aux affaires .
2 Profil de log4j2
Il se compose principalement de configuration, appenders, Bûcherons, propriétés plusieurs propriétés
2.1 Propriétés de configuration
Il y a plusieurs propriétés statut monitorInterval et ainsi de suite.
Statut: pour contrôler le cadre lui-même log4j2 niveau de journalisation, par exemple, peut être configuré comme: « trace », « debug », « info », « mettre en garde ».
monitorInterval: tous les combien de secondes pour relire le fichier de configuration, vous ne pouvez pas redémarrer le cas d'une application de modifier la configuration. Similaire au déploiement chaud
2.2 appenders propriété
source de sortie, où la définition de la sortie du journal.
Console: la sortie du journal à la console
Fichier: La sortie du journal dans un fichier spécifié, vous devez configurer le chemin du fichier
RollingRandomAccessFile : sortie également à un fichier, mais lorsque le support lorsque le fichier atteint une certaine taille, l'autre d'un nouveau fichier est écrit dans le journal .
fileName spécifier l'emplacement actuel du fichier journal et le nom du fichier
filePattern de roulement se produit lorsque spécifié, et renommer les règles de transfert de fichiers
lorsque la taille spécifiée SizeBasedTriggeringPolicy lorsque le volume de fichier est supérieure à la valeur spécifiée, le déclencheur roulant
fichier spécifié numéro enregistré DefaultRolloverStrategy plus
TimeBasedTriggeringPolicy cette configuration nécessite et filePattern combinaison, une attention règle de changement de nom du fichier de configuration de filePattern est $ {FILE_NAME} -% d { aaaa-mm-jj HH-mm} -% i, le temps minimum de la taille des particules mm, c.- à -minute
TimeBasedTriggeringPolicy taille spécifiée est 1, est combiné pour générer un nouveau fichier toutes les 1 minute. Si le changement% d {aaaa-MM-JJ HH}, une taille de particule minimum d'heures, chaque heure génère un fichier
Async: asynchrone, la nécessité de spécifier la sortie asynchrone source (généralement utilisé pour configurer RollingRandomAccessFile) par AppenderRef
2.3 Bûcherons propriété
le nom peut entrer le nom du package, il peut être sortie des chemins différents dans différents fichiers dans le package
Niveau: Quel niveau de journaux de sortie
additivité: si l'héritage, s'il est vrai, la sortie de l'enregistreur de classe parent correspondant au fichier de sortie sera à nouveau journal, est généralement définie sur false
<Nom Logger = niveau "rollingRandomAccessFileLogger" = additivité "trace" = "true"> <AppenderRef ref = "RollingRandomAccessFile" /> </ logger>
2.4 Propriétés propriété
Permet de définir la constante, à d'autres moments pour faire référence à la configuration, la configuration est facultative
3 cas log4j2
<XML version = "1.0" encoding = "UTF - 8."?>
<! - chemin racine -> <Configuration Status = "WARN" paquets = "org.apache.logging.log4j.core.pattern"> < propriétés> <! - fichier de définition de format de sortie, peuvent être référencées directement à éviter la duplication des formats d' écriture -> <Property name = "CONFIGURATION">% {D le mM-jJ-AAAA HH: mm: ss.sss} | -% - 5level [ % discussion] C% [% l] - | n% MSG% </ propriété> </ Propriétés> <! - - définir la sortie de chemin> <les appenders dans> <nom de la console = "CONSOLE" target = " system_out "> <= le motif PatternLayout" $ {} le format « /> </ Console> <Name RollingFile = "TraceLog" fileName = "logs / TraceLog.log" filePattern
= "logs / tracelog - $$ {date: aaaa-MM} / app-% d {MM-dd-yyyy} -% i.log.gz"> <motif PatternLayout = "% msg% n" /> <Politiques > <TimeBasedTriggeringPolicy /> <size SizeBasedTriggeringPolicy = "250 Mo" /> </ Politiques> </ RollingFile> <name Async = "AsyncTraceLog"> <AppenderRef ref = "TraceLog" /> </ Async> <name Async = "AsyncCONSOLE "> <AppenderRef ref =" CONSOLE »/> </ Async> </ appenders> <! -按照不同的包路径和日志文件路径关联在一起-> <enregistreurs> <name AsyncLogger = "com.log.broker" niveau
= "info" additivité = "false"> <AppenderRef ref = "AsyncCONSOLE" /> </ AsyncLogger> <name Logger = "com.log.trace" niveau = "info" additivité = "false"> <AppenderRef ref = » AsyncTraceLog »/> </ logger> <racine = "info"> <AppenderRef ref = "AsyncCONSOLE"/> </ root> </ enregistreurs> </ configuration>
Certains couramment utilisés espaces réservés Chemin du fichier:
% D {HH: MM: ss.sss} représente le temps de sortie de la milliseconde % Nom du fil de courant de sortie de T sortie% -5level log niveau - la figure 5 représente un signal de sortie aligné à gauche et fixes cinq caractères, si le droit si moins de 0 % MSG log texte % n-wrap autre des espaces réservés sont généralement: % sortie de classe F où le nom de fichier, tel que Log4j2Test.java % numéro de rangée de l % de M , où la méthode de sortie nom énoncé% de l , où le nombre de lignes de sortie, y compris le nom de la classe, nom de la méthode, le nom du fichier, le numéro de ligne
Cet article provient de: https://blog.csdn.net/vbirdbest/article/details/71751835