Dans l'article précédent, je vous ai présenté le tutoriel détaillé sur Java Log4J. Pour plus de détails, veuillez consulter ci-dessous.
Tout d'abord, nous vous fournissons un téléchargement log4j.jar: http://logging.apache.org/log4j/1.2/download.html
1. Utilisez Log4J pour le projet Web Java
1. Ajouter le fichier web.xml
<! - Configurer log4j -> <context-param> <param-name> webApprootKey </ Param-Name> <Amam-Value> com.hsinghsu.testssh.webapp.root </ param-Value> </ Contex t - param> <context-param> <param-name> log4jconfiglocation </ param-name> <param-value> /web-inf/classes/log4j.properties </ param-value> </ context-par am> <context -Param> <param-name> log4jrefreshinterval </ param-name> <param-valeur> 600000 </onsam-valeur> </ context-Param>
2. Ajouter un fichier log4j.properties
log4j.rootcategory = info, stdout, r log4j.appender.stdout = org.apache.log4j.consoleAppender log4j.appender.stdout.layout = org.apache.conversionPattern = [QC % p [% t]% C.% m (% l) |% m% n log4j.appender.r = org.apache.log4j.dailyrollingfileAppender # log4j.appender.r.file = e: // test // Avatar .log ## Linux Logs Fichier Path # log4j.appender.r.file = $ {com.hsinghsu.testssh.webapp.root} /log/testlog.log ## Path de fichier de journaux Windows Log4j.appender .r.file = D: //eclipsespace//testssh//webcontent//web-inf//testlog.log log4j.appenden - [ts]% p% t% c -% m% n # log4j.logger.com.neusoft = debug # log4j.logger.com.opensymphony.oscache = error log4j.logger.net.sf.navigator = info # log4 log4j.logger.net.sf.navigator = info # log4 J.Logger .org.apache.commons = erreur # log4j.logger.org.apache.struts = warn # log4j.logger.org.displaytag = erreur # log4j.logger.org.springframework = inf o # # log4j.logger. com.ibatis. org.hibernate = debug log4j.logger.org.hibernate = info # log4j.logger.org.logicalcobwebs = warn
3. Utilisez log4j
Par exemple, utilisez log4j dans userServiceImpl.java.
package com.hsinghsu.testssh.service.impl; Dao .Userdao; Logger statique final = Logger.getLogger (UserServiceImpl.Class); Logger privé = Logger.getLogger (this.getClass (). GetName ()); - UserServiceIMPL Méthode de connexion Nom: "+ name +" Mot de passe: "+ mot de passe); utilisateur utilisateur = userdao.getUserByName (name); if (user! = Null) {if (passworn d.equals (user.getpwd ())) {return true;}} return false;
2. Explication détaillée des paramètres log4j.properties
Les niveaux de journal sont divisés en débogage (informations de débogage), informations (informations générales), avertissement (informations d'avertissement), erreur (informations d'erreur) et fatal (informations d'erreur mortelles).
Log4j prend en charge deux formats de fichiers de configuration, l'un est un fichier de format XML, et l'autre est un fichier de propriété Java Log4j.properties.
1. Configurez le journaliste racine
Logger est responsable de la gestion de la plupart des opérations de l'exploitation forestière, et sa syntaxe est:
LOG4J.ROOTLOGGER = [NIVEAU], APPENDERNAME1, APPENDERNAME2,…
Niveau: La priorité de l'exploitation forestière est-elle divisée en off, mortelle, erreure, avertissement, info, débogage, tout ou le niveau que vous définissez.
APPENDERNAME: est le nom de la destination de sortie des informations de journal spécifiée.
Par exemple: log4j.rootlogger = info, a1, b2, c3
Dans les premières versions log4j, org.apache.category a implémenté la fonction d'un logger, puis a étendu la classe de catégorie à l'aide de l'enregistrement, de sorte que log4j.rootcategory peut également être utilisé.
Par exemple: log4j.rootcategory = info, a1, a2
2. Configurer l'appenner de destination pour la sortie des informations du journal
L'appender est responsable du contrôle de la sortie des opérations de journalisation, et sa syntaxe est:
log4j.appender.appendername = entièrement.qualified.name.of.appender.class
Parmi eux, "entièrement.qualified.name.of.appender.class" a les types suivants:
i.org.apache.log4j.consoleAPpender (console)
Il existe plusieurs options:
Threshold = Warn: Spécifie le niveau de sortie le plus bas des messages de journal.
ImmédiateFlush = true: la valeur par défaut est vraie, ce qui signifie que tous les messages seront immédiatement sortis.
Target = System.err: Par défaut, c'est: System.out, spécifiez la console de sortie
ii.org.apache.log4j.fileAppender (fichier)
Il existe plusieurs options:
Threshold = Warn: Spécifie le niveau de sortie le plus bas des messages de journal.
ImmédiateFlush = true: la valeur par défaut est vraie, ce qui signifie que tous les messages seront immédiatement sortis.
File = mylog.txt: spécifie que le message est sorti dans le fichier mylog.txt.
APPEND = FAUX: La valeur par défaut est vraie, ce qui signifie l'ajout du message au fichier spécifié.
iii.org.apache.log4j.dailyrollingFileAPpender (génère un fichier journal tous les jours)
Il existe plusieurs options:
Threshold = Warn: Spécifie le niveau de sortie le plus bas des messages de journal.
ImmédiateFlush = true: la valeur par défaut est vraie, ce qui signifie que tous les messages seront immédiatement sortis.
File = a.log: spécifie que le message est sorti dans le fichier A.Log, qui démarre à partir du chemin racine du serveur Web par défaut.
APPEND = FAUX: La valeur par défaut est vraie, ce qui signifie l'ajout du message au fichier spécifié.
DatePattern = '.' Yyyy-ww: Faites défiler le fichier une fois par semaine, c'est-à-dire générer un nouveau fichier chaque semaine. Bien sûr, vous pouvez également spécifier mensuel, semaine, jour, heure et minute. C'est-à-dire que le format correspondant est le suivant:
'.'yyyy-mm: mensuel
'.'yyyy-ww: hebdomadaire
'.'yyyy-mm-dd: tous les jours
'.'yyyy-mm-dd-a: deux fois par jour
'.'yyyy-mm-dd-hh: horaire
'.'yyyy-mm-dd-hh-mm: par minute
iv.org.apache.log4j.rollingFileAPender (un nouveau fichier est généré lorsque la taille du fichier atteint la taille spécifiée. Vous pouvez définir la taille du fichier par log4j.appender.appendername.maxFilesize = 100KB)
Il existe plusieurs options:
Threshold = Warn: Spécifie le niveau de sortie le plus bas des messages de journal.
ImmédiateFlush = true: la valeur par défaut est vraie, ce qui signifie que tous les messages seront immédiatement sortis.
File = a.log: spécifie que le message est sorti dans le fichier A.Log, qui démarre à partir du chemin racine du serveur Web par défaut.
APPEND = FAUX: La valeur par défaut est vraie, ce qui signifie l'ajout du message au fichier spécifié.
MaxFileSize = 100KB: Le suffixe peut être KB, MB ou GB.
MaxbackupIndex = 2: spécifie le nombre maximum de fichiers de défilement pouvant être généré.
v.org.apache.log4j.writerAPPENDEN (Envoyer des informations de journal au format de flux à n'importe quel endroit spécifié)
Par exemple:
log4j.appenden
log4j.appender.r.file = d: //eclipsspace//testssh//webcontent//web-inf//testlog.log
3. Configurer le format (mise en page) des informations du journal
La mise en page est responsable de la mise en forme de la sortie de l'appender, et sa syntaxe est:
LOG4J.APPENDER.APPENDERNAME.LAYOUT = FOLLOD.QUALIFIED.NAME.OF.LAYOUT.CLASS
Parmi eux, "entièrement.qualified.name.of.layout.class" a les types suivants:
i.org.apache.log4j.htmllayout (mise en page sous forme de table html)
Il existe plusieurs options:
LocationInfo = true: la valeur par défaut est fausse, sortie le nom du fichier Java et le numéro de ligne
Title = My App Fichier: La valeur par défaut est les messages de journal log4j.
ii.org.apache.log4j.patternlayout (le mode de mise en page peut être spécifié de manière flexible)
Il existe plusieurs options:
ConversionPattern =% m% n: Spécifie comment formater le message spécifié.
-X Numéro: Alignement gauche lorsque les informations x sont sorties;
% P: La priorité des informations sur le journal de sortie, c'est-à-dire le débogage, les informations, les avertissements, l'erreur, le fatal,
% D: La date ou l'heure du point de jour du journal est la sortie. Similaire: 18 octobre 2002 Jour 22:10:28, 921
% R: Le nombre de millisecondes à sortir du démarrage de l'application à la sortie de ces informations de journal
% C: La catégorie à laquelle appartient les informations du journal de sortie est généralement le nom complet de la classe
% T: Sortie du nom de thread qui génère l'événement de journal
% L: L'événement de journal de sortie se produit à l'emplacement de l'occurrence de% C.% m (% f:% l), y compris le nom de la catégorie, le thread d'occurrence et le nombre de lignes dans le code. Exemple: testlog4.main (testlog4.java:10)
% X: La sortie de NDC (Neshed Diagnostic Environment) associée au thread actuel, en particulier dans des applications telles que les servlets Java à plusieurs clients et multi-threading.
%%: Sortie un caractère "%"
% F: le nom du fichier où le message du journal de sortie a été généré
% L: numéro de ligne dans le code de sortie
% M: Le message spécifié dans le code de sortie et les informations de journal spécifiques générées
% N: Sortie d'une rupture de ligne de retour du chariot, la plate-forme Windows est "/ r / n", la plate-forme UNIX est "/ n" pour sortir des ruptures de ligne d'informations de journal peut être ajoutée entre% et les caractères de mode pour contrôler sa largeur minimale et sa largeur maximale. Largeur et alignement du texte. comme:
% 20C: Spécifie le nom de la catégorie de sortie, la largeur minimale est de 20. Si le nom de la catégorie est inférieur à 20, il est aligné à droite par défaut.
% -20C: Spécifie le nom de la catégorie de sortie.
% .30c: spécifiez le nom de la catégorie de sortie. ne pas les espaces.
% 20.30c: Si le nom de la catégorie est inférieur à 20, remplissez l'espace et alignez à droite.
Par exemple:% -4r% -5p% d {yyyy-mm-dd hh: mm: sss}% c% m% n
[Test]% p [% t]% C.% m (% l) |% m% n
iii.org.apache.log4j.simplelayout (contient le niveau et la chaîne d'informations d'informations sur le journal)
iv.org.apache.log4j.ttcclayout (y compris le temps, le thread, la catégorie, etc. de la génération de journaux)
4. Autres
log4j.logger.com.
Spécifiez que toutes les classes du package com.neusoft sont de débogage.
log4j.logger.com.opensymphony.oscache = erreur
log4j.logger.net.sf.navigator = erreur
Ces deux phrases définissent le niveau des erreurs qui se produisent sous ces deux packages sur l'erreur.
log4j.logger.org.apache.commons = erreur
log4j.logger.org.apache.struts = avertir
Ces deux phrases sont le paquet de jambes de force.
log4j.logger.org.displaytag = erreur
Cette phrase est le package DisplayTag. (Utilisé sur la page de liste de questions QC)
log4j.logger.org.springframework = debug
Cette phrase est un package à ressort.
log4j.logger.org.hibernate.ps.preparedstatementCache = Warn
log4j.logger.org.hibernate = debug
Ces deux phrases sont le package d'Hibernate.
3. Écrivez des journaux à plusieurs fichiers.
Configuration log4j:
log4j.rootcategory = info, stdout
log4j.appenden
log4j.appenden
log4j.appender.stout.layout.conversionPattern =% d {yyy-mm-dd hh /: mm /: ss, ss} [colorcouds]% p [% t]% C.% m (% l) | n
log4j.logger.net.sf.navigator = info
log4j.logger.org.springframework = info
log4j.logger.runlogger = info, r
log4j.appenden
log4j.appender.r.file = g: //log//runlog.log
log4j.appender.r.maxfilesize = 51200KB
# log4j.appender.r.file = $ {com.huawei.iciciy.webapp.root} /log/icity.log
log4j.appender.r.layout = org.apache.log4j.patternlayout
log4j.appender.r.layout.ConversionPattern =% d {yyyy-mm-dd hh /: mm /: ss, ss} [ColorClouds run]% p [% t]% C.% m (% l) | % n
# log4j.logger.businessLogger = info, b
# log4j.appenden
# log4j.appender.b.file = g: //log//businesslog.log
# log4j.appender.b.maxfilesize = 51200KB
# log4j.appender.b.layout = org.apache.log4j.patternlayout
# log4j.appenden M% n
log4j.logger.interfacelogger = info, i
log4j.appenden
log4j.appender.i.file = g: //log//interfacelog.log
log4j.appender.i.maxfilesize = 51200KB
log4j.appender.i.layout = org.apache.log4j.patternlayout
log4j.appender.i.layout.conversionPattern =% d {yyy-mm-dd hh /: mm /: ss, ss} [interface colorcouds]% p [% t]% C.% m (% l) | % n
appel java:
import org.apache.commons.logging.log; getLog ("runLogger"); // Exécuter le log log privé static log interfacelog = logfactory.getLog ("interfacelogger"); // corde de journal interface exécute eeccute () lance sauf ion {interfacelog.info ("==== >> request "); runLog.info (" Request 02 "); return super.execute ();}}
Ce qui suit est un moyen de configurer LOG4J dans un projet Web
1. Modifiez dynamiquement le niveau d'enregistrement et la politique, et il n'est pas nécessaire de redémarrer l'application Web, comme indiqué dans "Effective Enterprise Java".
2. Définissez le fichier journal sur / web-inf / logs / sans écrire un chemin absolu.
3. Vous pouvez placer log4j.properties et autres propriétés avec / web-inf / au lieu de classe de classe.
Ajouter web.xml
<! - Si le paramètre WebApprootKey n'est pas défini, le WebApprootKey est le "webapp.root" par défaut ->
<Touxt-Param> <Am param-name> webApprootKey </ Param-Name> <AmArd-Value> xxx.root </ Param-Value> </ftext-Param> <Touxet-Param> <param-name> log 4jconfiglocation < / param-name> <param-valeur> web-inf / log4j.properties </ param-value> </ context-param> <ftext-param> <param-name> log4jrefreshinterval </ param-name> <param-valeur > 60000 </ param-Value> </fettext-Param> <Douner> <écouteur-classe> org.springframework.web.util.log4jconfigListener </ auteur-cllass> </diner>
Dans la configuration ci-dessus, log4jconfigListener lira le fichier de configuration dans Web-inf / log4j.propeties;
Ouvrez un thread de surveillance pour scanner les modifications du fichier de configuration toutes les 60 secondes;
Et appuyez sur le chemin d'accès du répertoire Web dans une variable système appelée webApp.root.
Ensuite, l'emplacement du fichier de journaux peut être défini dans log4j.properties
log4j.appender.logfile.file = $ {webapp.root} /web-inf/logs/myfuse.log
S'il existe plusieurs applications Web et craignent que les variables WebApp.Root soient répétées, vous pouvez définir WebApprootKey dans Context-Param.
Ce qui précède est les compétences de cet article pour analyser la configuration Java Web Log4J et configurer LOG4J dans les projets Web.