Dans ce tutoriel, nous allons vous montrer comment utiliser le fichier log4j 1.2.x classique pour consigner un message de débogage ou d’erreur dans une application Java.
1. Répertoire du projet
Passez en revue la structure finale du projet, un projet Java standard de style Maven.
2. Obtenez Log4j
Déclare les dépendances suivantes:
pom.xml
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
Pour les utilisateurs non-Maven, visitez la page officielle log4j , téléchargez le fichier jar et placez-le manuellement dans le chemin d’accès à la bibliothèque du projet.
3. log4j.properties
Créez un fichier
log4j.properties
et placez-le dans le dossier des ressources.
Reportez-vous à l’étape 1 ci-dessus.
dans le répertoire
project/classes
. Pour les applications Web Java, assurez-vous que le fichier
log4j.properties
est
dans le répertoire
WEB-INF/classes
log4j.properties
# Root logger option log4j.rootLogger=DEBUG, stdout, file # Redirect log messages to 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # Redirect log messages to a log file, support file rolling. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=C:\\log4j-application.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
-
Note ** + Pour comprendre les symboles du
ConversionPattern
, référez-vous à ce log4j Guide de PatternLayout .
Laissez le décomposer:
-
% d \ {aaaa-MM-jj HH: mm: ss} = Format de date et heure, voir
SimpleDateFormat JavaDoc.
-
% -5p = La priorité de journalisation, comme DEBUG ou ERROR. Le -5 est optionnel,
pour le joli format d’impression.
-
% c \ {1} = Le nom de journalisation que nous avons défini via getLogger (), reportez-vous à
-
% L = Le numéro de ligne d’où la demande de journalisation.
-
% m% n = Le message à enregistrer et le saut de ligne.
Exemples de messages de journal:
2014-07-02 20:52:39 DEBUG className:200 - This is debug message 2014-07-02 20:52:39 DEBUG className:201 - This is debug message2
4. Démo - Comment enregistrer un message?
Pour consigner un message, commencez par créer un consignateur
statique final
et définissez un nom pour le consignateur. Nous utilisons normalement le nom complet de la classe du package.
final static Logger logger = Logger.getLogger(classname.class);
Ensuite, enregistre les messages avec des priorités différentes, par exemple, debug, info, warn, error et fatal. Normalement, il vous suffit d’utiliser le débogage ou l’erreur.
//logs a debug message if(logger.isDebugEnabled()){ logger.debug("This is debug"); } //logs an error message with parameter logger.error("This is error : " + parameter); //logs an exception thrown from somewhere logger.error("This is error", exception);
4.1 Exemple: Logger est défini sur debug priority.
log4j.properties
log4j.rootLogger=DEBUG, stdout #...
HelloExample.java
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample{ final static Logger logger = Logger.getLogger(HelloExample.class); public static void main(String[]args) { HelloExample obj = new HelloExample(); obj.runMe("mkyong"); } private void runMe(String parameter){ if(logger.isDebugEnabled()){ logger.debug("This is debug : " + parameter); } if(logger.isInfoEnabled()){ logger.info("This is info : " + parameter); } logger.warn("This is warn : " + parameter); logger.error("This is error : " + parameter); logger.fatal("This is fatal : " + parameter); } }
Sortie
2014-07-02 20:52:39 DEBUG HelloExample:19 - This is debug : mkyong 2014-07-02 20:52:39 INFO HelloExample:23 - This is info : mkyong 2014-07-02 20:52:39 WARN HelloExample:26 - This is warn : mkyong 2014-07-02 20:52:39 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:52:39 FATAL HelloExample:28 - This is fatal : mkyong
4.2 Exemple – L’enregistreur est défini sur erreur priorité.
log4j.properties
log4j.rootLogger=error, stdout #...
Exécutez à nouveau
HelloExample
, vous obtiendrez le résultat suivant
2014-07-02 20:56:02 ERROR HelloExample:27 - This is error : mkyong 2014-07-02 20:56:02 FATAL HelloExample:28 - This is fatal : mkyong
Passez en revue la classe
Priority
de log4j.
Priority.java
package org.apache.log4j; public class Priority { public final static int OFF__INT = Integer.MAX__VALUE; public final static int FATAL__INT = 50000; public final static int ERROR__INT = 40000; public final static int WARN__INT = 30000; public final static int INFO__INT = 20000; public final static int DEBUG__INT = 10000; //public final static int FINE__INT = DEBUG__INT; public final static int ALL__INT = Integer.MIN__VALUE;
Si la priorité est définie dans
log4j.properties
, seul le message de priorité identique ou supérieur sera consigné.
5. Démo - Comment enregistrer une exception
Un exemple pour vous montrer comment utiliser log4j pour enregistrer une exception.
HelloExample2.java
package com.mkyong; import org.apache.log4j.Logger; public class HelloExample2{ final static Logger logger = Logger.getLogger(HelloExample2.class); public static void main(String[]args) { HelloExample2 obj = new HelloExample2(); try{ obj.divide(); }catch(ArithmeticException ex){ logger.error("Sorry, something wrong!", ex); } } private void divide(){ int i = 10/0; } }
Sortie
2014-07-02 21:03:10 ERROR HelloExample2:16 - Sorry, something wrong! java.lang.ArithmeticException:/by zero at com.mkyong.HelloExample2.divide(HelloExample2.java:24) at com.mkyong.HelloExample2.main(HelloExample2.java:14)
Terminé.
Télécharger le code source
Télécharger le code source - log4j-hello-world-example.zip (8 KB)
Références
mise en page de modèle]. Wikipedia: log4j
-
lien://ressort-MVC/printemps-MVC-log4j-intégration-exemple/[printemps MVC
exemple log4j]. lien://enregistrement/log4j-log4j-propriétés-exemples/[log4j.properties
exemples]
lien://tag/hello-world/[hello world]lien://tag/log4j/[log4j]