1. Fichier de configuration
Le format de base du fichier de configuration Log4J est le suivant :
Copiez le code comme suit :
#Configurer l'enregistreur racine
log4j.rootLogger = [ niveau ] , appenderName1 , appenderName2 , …
#Configurer la destination de sortie des informations du journal Appender
log4j.appender.appenderName = entièrement.qualifié.nom.of.appender.class
log4j.appender.appenderName.option1 = valeur1
…
log4j.appender.appenderName.optionN = valeurN
#Configurer le format (mise en page) des informations du journal
log4j.appender.appenderName.layout = entièrement.qualifié.nom.of.layout.class
log4j.appender.appenderName.layout.option1 = valeur1
…
log4j.appender.appenderName.layout.optionN = valeurN
Où [niveau] est le niveau de sortie du journal, il y a 5 niveaux au total :
Copiez le code comme suit :
MORTEL 0
ERREUR 3
AVERTISSEMENT 4
INFORMATIONS 6
DÉBOGAGE 7
Appender est la destination de sortie du journal. Les appenders fournis par Log4j incluent les éléments suivants :
Copiez le code comme suit :
org.apache.log4j.ConsoleAppender(console),
org.apache.log4j.FileAppender(fichier),
org.apache.log4j.DailyRollingFileAppender (génère un fichier journal chaque jour),
org.apache.log4j.RollingFileAppender (génère un nouveau fichier lorsque la taille du fichier atteint la taille spécifiée),
org.apache.log4j.WriterAppender (envoie les informations du journal au format streaming à n'importe quel endroit spécifié)
Mise en page : format de sortie du journal Les mises en page fournies par Log4j sont les suivantes :
org.apache.log4j.HTMLLayout (mise en page au format tableau HTML),
org.apache.log4j.PatternLayout (peut spécifier de manière flexible des modèles de mise en page),
org.apache.log4j.SimpleLayout (contient le niveau et la chaîne d'informations des informations du journal),
org.apache.log4j.TTCCLayout (contient l'heure de génération du journal, le thread, la catégorie, etc.)
Paramètres d'impression : Log4J utilise un format d'impression similaire à la fonction printf en langage C pour formater les informations du journal, comme suit :
Copiez le code comme suit :
%m Afficher le message spécifié dans le code %p Priorité de sortie, c'est-à-dire DEBUG, INFO, WARN, ERROR, FATAL
%r Affiche le nombre de millisecondes nécessaires entre le démarrage de l'application et la sortie des informations du journal %c Affiche la catégorie à laquelle elle appartient, généralement le nom complet de la classe %t Affiche le nom du thread qui a généré l'événement de journal %n Afficher un retour chariot et un saut de ligne, la plate-forme Windows est "/r/n", la plate-forme Unix est "/n"
%d affiche la date ou l'heure du point temporel du journal. Le format par défaut est ISO8601. Vous pouvez également spécifier le format par la suite, par exemple : %d{aaa MMM dd HH:mm:ss, SSS}. : 18 octobre 2002. 22:10:28, 921
%l Affiche l'emplacement où l'événement de journal s'est produit, y compris le nom de la catégorie, le thread où il s'est produit et le numéro de ligne dans le code. Exemple : Testlog4.main(TestLog4.java : 10)
2. Initialisez Logger dans le code : 1) Appelez la méthode BasicConfigurator.configure() dans le programme : ajoutez un ConsoleAppender à l'enregistreur racine, définissez le format de sortie sur "%-4r [%t] %-5p %c %x - %m%n" via PatternLayout , et également Le niveau par défaut pour les enregistreurs rootés est Level.DEBUG.
2) La configuration est placée dans le fichier, le nom du fichier est transmis via les paramètres de ligne de commande, analysé et configuré via PropertyConfigurator.configure(args[x]);
3) La configuration est placée dans le fichier, le nom du fichier et d'autres informations sont transmises via des variables d'environnement et le processus d'initialisation par défaut de log4j est utilisé pour analyser et configurer ;
4) La configuration est placée dans le fichier, le nom du fichier et d'autres informations sont transmises via la configuration du serveur d'applications et un servlet spécial est utilisé pour terminer la configuration.
3. Définissez le niveau de sortie du journal pour différents appenders :
Lors du débogage du système, nous prêtons souvent attention uniquement à la sortie du journal au niveau des exceptions, mais généralement tous les niveaux de sortie sont placés dans un seul fichier si le niveau de sortie du journal est BUG ! ? Alors va le chercher lentement.
À l’heure actuelle, nous pouvons penser que ce serait formidable si nous pouvions afficher séparément les informations sur les exceptions dans un fichier. Bien entendu, Log4j propose déjà une telle fonction. Il suffit de modifier le seuil de l'Appender dans la configuration pour y parvenir, comme dans l'exemple suivant :
[fichier de configuration]
Copiez le code comme suit :
### définir les niveaux de journalisation ###
log4j.rootLogger = débogage, sortie standard, D, E
###Sortie vers la console###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLU} %5p %c{ 1 }:%L - %m%n
### Sortie dans le fichier journal###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = vrai
log4j.appender.D.Threshold = DEBUG ## Journaux de sortie au-dessus du niveau DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{aaaa-MM-jj HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### Enregistrer les informations sur les exceptions dans un fichier séparé###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## Nom du fichier journal des exceptions
log4j.appender.D.Append = vrai
log4j.appender.D.Threshold = ERREUR ## Uniquement les journaux de sortie au-dessus du niveau d'ERREUR !!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{aaaa-MM-jj HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
[Utilisé dans le code]
classe publique TestLog4j {
public static void main (String[] arguments) {
PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );
Enregistreur enregistreur = Logger.getLogger (TestLog4j. class );
logger.debug( " debug " );
logger.error( " erreur " );
}
}
Exécutez-le et voyez si les informations d'exception sont enregistrées dans un fichier error.log séparé