1 Instructions de configuration de Log4j
1.1 Fichier de configuration
Log4j peut être défini dynamiquement via un programme Java.L'inconvénient évident de cette méthode est que si vous devez modifier le niveau de sortie du journal et d'autres informations, vous devez modifier le fichier Java puis le recompiler, ce qui est très gênant ;
Log4j peut également être défini via des fichiers de configuration. Actuellement, il prend en charge deux formats de fichiers de configuration :
•fichier XML
•fichier de propriétés (recommandé)
Voici le contenu complet d'un fichier de configuration log4j :
Copiez le code comme suit :
log4j.rootCategory=INFO, sortie standard
log4j.rootLogger=info, sortie standard
### sortie standard ###
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 - %m%n
### définir le package ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
1.2 Configurer le logger racine
Le logger racine définit principalement le niveau de journalisation et la destination de sortie pris en charge par log4j. Sa syntaxe est :
log4j.rootLogger = [ niveau ] , appenderName, appenderName, …
Parmi eux, le niveau est la priorité de la journalisation, qui est divisée en niveaux OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL ou personnalisés.
Il est recommandé d'utiliser seulement quatre niveaux. Les priorités de haut en bas sont ERROR, WARN, INFO et DEBUG.
appenderName spécifie où les informations du journal sont sorties et plusieurs destinations de sortie peuvent être spécifiées en même temps.
1.3 Configurer la destination de sortieAppender
Appender définit principalement où les informations du journal sont sorties. La syntaxe principale est :
Copiez le code comme suit :
log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = valeur1
…
log4j.appender.appenderName.optionN = valeurN
Les appenders fournis par Log4j incluent les éléments suivants :
•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 (envoyer les informations du journal au format streaming à n'importe quel endroit spécifié)
Prenons ConsoleAppender comme exemple, tel que :
Copiez le code comme suit :
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 Configurer la présentation du format des informations du journal
La mise en page est responsable du formatage de la sortie de l'Appender. Sa syntaxe est :
Copiez le code comme suit :
log4j.appender.appenderName.layout = classInfo
log4j.appender.appenderName.layout.option1 = valeur1
…
log4j.appender.appenderName.layout.optionN = valeurN
Parmi eux, les mises en page fournies par Log4j incluent 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.)
1.5 Définir le niveau de sortie du package
Vous pouvez définir le niveau de sortie du journal de différents packages. La syntaxe est la suivante :
log4j.logger.packageName=niveau
Parmi eux, packageName est le nom réel du package et level est le niveau de journalisation, par exemple :
Copiez le code comme suit :
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
2 Log4j combiné avec J2ee
2.1 Utilisation de l'architecture Spring
Spring est vraiment bien. Il a fait beaucoup de choses pour nous. Si le système utilise le framework spring, il est très simple d'intégrer log4j. Il est principalement divisé en 3 étapes, comme suit :
2.1.1 Définir le fichier de configuration log4j
Copiez le code comme suit :
log4j.rootCategory=INFO, sortie standard
log4j.rootLogger=info, sortie standard
### sortie standard ###
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 - %m%n
### journal dans le fichier ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=debug
2.1.2 Définir les auditeurs
L'écouteur doit être défini dans web.xml, qui comprend principalement : la définition du répertoire du fichier de configuration log4j et de l'écouteur log4j, comme suit :
Copiez le code comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<version de l'application Web="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--L'emplacement du fichier de configuration Log4j chargé par Spring-->
<paramètre-contexte>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<paramètre-contexte>
<param-name>contextConfigLocation</param-name>
<valeur-param>
/WEB-INF/classes/applicationContext*.xml
</valeur-param>
</context-param>
<!--Chargeur de configuration Spring log4j-->
<auditeur>
<classe-auditeur>
org.springframework.web.util.Log4jConfigListener
</classe-auditeur>
</auditeur>
<auditeur>
<classe-auditeur>
org.springframework.web.context.ContextLoaderListener
</classe-auditeur>
</auditeur>
<servlet>
<servlet-name>InitiaServlet</servlet-name>
<servlet-class>chb.test.web.InitiaServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<liste-de-fichiers-de-bienvenue>
<fichier-bienvenue>index.jsp</fichier-bienvenue>
</welcome-file-list>
</application-web>
2.1.3 Classe d'essai
Copiez le code comme suit :
paquet com.dheaven.mip.web ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer org.apache.log4j.Logger ;
la classe publique InitiaServlet étend HttpServlet {
logger protégé = Logger.getLogger (InitiaServlet.class);
privé statique final long serialVersionUID = 8550329576989690578L ;
/**
* Constructeur de l'objet.
*/
public InitiaServlet() {
super();
}
/**
* Destruction de la servlet <br>
*/
public void destroy() {
super.destroy();
}
/**
* Initialisation de la servlet <br>
*
* @throws ServletException si une erreur se produit
*/
public void init() lance ServletException {
log.debug("Le serveur a démarré et log4j a commencé à fonctionner");
}
}
2.2 Ne pas utiliser l'architecture Spring
Si le système n'utilise pas Spring, prenons le servlet comme exemple. C'est très simple. Vous pouvez simplement suivre les étapes et coller uniquement le code, pas de bêtises.
2.2.1 Définir le fichier de configuration log4j
Placez-le dans le répertoire WEB-INF du projet web, avec le contenu suivant :
Copiez le code comme suit :
log4j.rootCategory=INFO, sortie standard
log4j.rootLogger=info, sortie standard
### sortie standard ###
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 - %m%n
### définir le package ###
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.com.dheaven=débogage
2.2.2 Créer une classe d'initialisation log4j
Copiez le code comme suit :
paquet com.dheaven.mip.web ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer org.apache.log4j.PropertyConfigurator ;
la classe publique InitLog4j étend HttpServlet {
privé statique final long serialVersionUID = 1L ;
public void init() lance ServletException {
Préfixe de chaîne = getServletContext().getRealPath("/");
préfixe = préfixe.replace("//", "/");
Fichier de chaîne = getInitParameter("log4j-init-file");
// si le fichier log4j-init n'est pas défini, cela ne sert à rien d'essayer
si (fichier != null) {
PropertyConfigurator.configure(préfixe + fichier);
}
}
}
2.2.3 Définir la classe d'initialisation dans Web.xml
Copiez le code comme suit :
<servlet>
<nom-servlet>log4j-init</nom-servlet>
<servlet-class>chb.test.web.InitLog4j</servlet-class>
<param-init>
<param-name>fichier-log4j-init</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2.2.4 Classe d'essai
Copiez le code comme suit :
paquet chb.test.web ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer org.apache.log4j.Logger ;
la classe publique InitiaServlet étend HttpServlet {
logger protégé = Logger.getLogger (InitiaServlet.class);
privé statique final long serialVersionUID = 8550329576989690578L ;
/**
* Constructeur de l'objet.
*/
public InitiaServlet() {
super();
}
/**
* Destruction de la servlet <br>
*/
public void destroy() {
super.destroy();
}
/**
* Initialisation de la servlet <br>
*
* @throws ServletException si une erreur se produit
*/
public void init() lance ServletException {
log.debug("Le serveur a démarré et log4j a commencé à fonctionner");
}
}