1.Avantages de Log4j
Log4j est un projet open source d'Apache. En utilisant Log4j, nous pouvons contrôler l'emplacement de livraison des informations du journal ; nous pouvons également contrôler le format de sortie de chaque journal en définissant le niveau de chaque information du journal ; détail du processus de génération. La chose la plus intéressante est que ceux-ci peuvent être configurés de manière flexible via un fichier de configuration sans modifier le code de l'application.
Les avantages de log4j sont :
(1) En modifiant le fichier de configuration, vous pouvez décider de la destination de la console d'informations du journal, du fichier, du composant GUI, même du serveur socket, de l'enregistreur d'événements NT, du démon UNIX Syslog, etc.
(2) En modifiant le fichier de configuration, vous pouvez définir le niveau de chaque message de journal pour contrôler s'il est émis. Pendant la phase de développement du système, des informations détaillées du journal peuvent être imprimées pour suivre le fonctionnement du système. Une fois le système stable, la sortie du journal peut être désactivée, permettant ainsi de suivre le fonctionnement du système tout en réduisant le code indésirable (System.out.println(.. ....)attendez).
(3) L'utilisation de log4j nécessite un mécanisme de journalisation unifié pour l'ensemble du système, ce qui est propice à la planification du système.
2. Fichier de configuration
Log4j se compose de trois composants importants : la priorité des informations du journal, la destination de sortie des informations du journal et le format de sortie des informations du journal. Les priorités des informations de journal de haut en bas incluent FATAL, ERROR, WARN, INFO, DEBUG, TRACE et ALL, qui sont utilisées pour spécifier respectivement l'importance de ces informations de journal ; être imprimé sur la console ou dans le fichier ; et le format de sortie contrôle le contenu d'affichage des informations du journal.
2.1 Priorité des informations du journal
Log4j recommande d'utiliser seulement quatre niveaux. Les priorités de haut en bas sont ERROR, WARN, INFO et DEBUG. Grâce aux niveaux définis ici, vous pouvez contrôler l'activation et la désactivation du niveau correspondant d'informations de journal dans l'application. Si le niveau INFO est défini ici, toutes les informations de journal inférieures au niveau INFO dans l'application ne seront pas imprimées.
2.2 Utilisation des sources de sortie
L'activation ou la désactivation sélective des demandes de journalisation n'est qu'une partie des fonctionnalités de Log4j. Log4j permet d'envoyer des requêtes de journalisation vers plusieurs sources de sortie. En termes Log4j, une source de sortie est appelée un Appender.
Appender comprend une console, des fichiers, des composants GUI, des serveurs de socket distants, JMS, des enregistreurs d'événements NT, des démons Syslog UNIX distants (service de journalisation en arrière-plan UNIX distant). Il peut également enregistrer de manière asynchrone. Un enregistreur peut définir plusieurs appenders. Ajoutez un appender à un enregistreur donné à l'aide de la méthode addAppender. Pour un enregistreur donné, chaque demande de journal valide est transmise à tous les appenders de l'enregistreur et aux appenders du logger parent de l'enregistreur.
2.2.1 ConsoleAppender
Si ConsoleAppender est utilisé, les informations du journal seront écrites dans la console. L'effet équivaut à l'impression d'informations directement sur System.out.
2.2.2 FileAppender
À l'aide de FileAppender, les informations du journal seront écrites dans le fichier spécifié. Cela devrait être une situation plus fréquemment utilisée. Par conséquent, le nom du fichier de sortie du journal doit être spécifié dans le fichier de configuration. La configuration suivante spécifie le nom du fichier journal log.txt.
log4j.appender.appendername.File=log.txt Notez que appendername est remplacé par l'alias d'Appender dans la configuration spécifique.
Remarque : Problème avec le chemin du fichier journal spécifié
2.2.3 DailyRollingAppender
Vous pouvez utiliser FileAppender pour afficher les informations du journal dans un fichier, mais si le fichier est trop volumineux, il sera peu pratique à lire. À ce stade, vous pouvez utiliser DailyRollingAppender. DailyRollingAppender peut générer des informations de journal dans des fichiers séparés par date. Le fichier de configuration générera un fichier journal chaque jour (l'heure peut être définie), et chaque fichier journal enregistre uniquement les informations du journal de ce jour :
Copiez le code comme suit :
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'aaaa-MM-jj
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
Un nouveau fichier est généré lorsque la taille du fichier atteint la taille spécifiée.
Copiez le code comme suit :
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Contrôler la taille maximale du fichier journal
log4j.appender.appendername.MaxFileSize=100 Ko
# Archiver les fichiers journaux (un fichier de sauvegarde ici)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
Ce fichier de configuration spécifie le nom de l'appender de la source de sortie, qui est un fichier journal tournant. Le fichier le plus volumineux fait 100 Ko Lorsqu'un fichier journal atteint la taille maximale, Log4J renomme automatiquement rlog.log en rlog.log.1, puis reconstruit un nouveau fichier rlog.log et effectue une rotation dans l'ordre.
2.2.5 WriterAppender
Envoyez les informations du journal à n’importe quel endroit spécifié au format streaming.
2.3 Configuration de la mise en page
La disposition spécifie le style de sortie des informations du journal.
2.3.1 Style de mise en page
Copiez le code comme suit :
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.)
2.3.2 Format
Copiez le code comme suit :
%m affiche le message spécifié dans le code
Priorité de sortie %p, à savoir 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 il 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 génère un caractère de retour chariot et de saut de ligne, qui est « rn » sur la plate-forme Windows et « n » sur la plate-forme Unix.
%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(Test Log4.java:10)
3.Définissez les niveaux de sortie du journal pour différents appenders
Ceci peut être réalisé en modifiant le seuil de l'Appender dans la configuration, comme dans l'exemple suivant :
Fichier de configuration :
log4j.rootLogger = débogage, A, B, C
#Sortie vers la console
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# Sortie dans le fichier journal
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = logs/log.log
log4j.appender.B.Append = vrai
log4j.appender.B.Threshold = DEBUG # Journaux de sortie au-dessus du niveau EBUG
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# Enregistrer les informations d'exception dans un fichier séparé
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Nom du fichier journal des exceptions
log4j.appender.C.Append = vrai
log4j.appender.C.Threshold = ERREUR #Seulement les journaux de sortie au-dessus du niveau d'ERREUR
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
exemple:
Copiez le code comme suit :
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.erreur("erreur");
}
}