1. Présentation
1.1 Contexte
L'enregistrement est très important dans notre développement quotidien. L'ajout de journalisation dans les applications est généralement basé sur trois objectifs: surveiller les modifications des variables dans le code, les enregistrant périodiquement en fichiers pour l'analyse statistique par d'autres applications; Suivi de la trajectoire d'exécution du code comme base pour les audits futurs; Agissant en tant que débogueur dans l'environnement de développement intégré, imprimant le code de débogage des informations dans le fichier ou la console.
1.2 Introduction
Log4j (journal pour Java) est un projet open source d'Apache, qui fournit un moyen délicat de gérer les journaux. Grâce à un fichier de configuration, nous pouvons contrôler le format de sortie et la destination de chaque journal avec plusieurs choix. En définissant le niveau d'informations, nous pouvons également changer de rétroaction de manière flexible dans le code. Autrement dit, Log4j est une bibliothèque API qui aide les développeurs à gérer la sortie du journal. Sa caractéristique la plus importante est que le fichier de configuration peut définir de manière flexible la priorité des informations du journal, la destination de sortie des informations du journal et le format de sortie des informations du journal.
2.Log4j Configuration
Diagramme de classe 2.1log4j
2.2 Définition du fichier de configuration
Log4j peut être réglé dynamiquement via les programmes Java. L'inconvénient évident de cette méthode est: si vous avez besoin de 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.
L'utilisation de fichiers de configuration rendra notre application plus flexible pour configurer les journaux, et les méthodes de sortie du journal incluent la priorité de sortie, la destination de sortie et le format de sortie. LOG4J prend en charge deux formats de fichiers de configuration, l'un est un fichier XML et l'autre est un fichier fonctionnant Java log4j.properties (key = valeur).
2.3 Fichier de configuration log4j.properties
Lorsque Log4j est appelé pour la première fois, Log4j localisera le fichier dans le ClassPath (../web-inf/class/ bien sûr, tant que le répertoire est inclus dans le CLASSPATH) et lisez la configuration complète du fichier. Ce fichier de configuration indique LOG4J quel format, quelles informations diffusent là où elle est. De même, nous devons configurer trois aspects:
1. Répertoire racine (niveau et destination);
2. Destination (console, fichier, etc.);
3. Style de sortie (comment afficher le contenu du journal)
Les exemples sont les suivants:
Niveau de sortie du journal #set
log4j.rootlogger = debug, appender1
#Output à la console
log4j.appender.appender1 = org.apache.log4j.consoleAPpender
#Style est ttcclayout
log4j.appender.appender1.layout = org.apache.log4j.ttcclayout
2.4. LOG4J trois composants Description
LOG4J a trois composants principaux: Loggers, appender (source de sortie) et mise en page (mise en page). La combinaison de ces trois composants permet une journalisation facile du type et du niveau d'informations, et peut contrôler le style et l'emplacement de la sortie du journal au moment de l'exécution. Voici les trois composants:
2.4.1 Logueur Logger
L'objet Logger est utilisé pour remplacer System.out ou System.
Le journaliste racine est configuré avec la syntaxe:
LOG4J.ROOTLOGGER = [NIVEAU], APPENDERNAME, APPENDERNAME,…
Parmi eux, le niveau est la priorité de l'exploitation forestière, divisée en niveaux fatals, mortels, avertissements, informations, débogage, tout ou personnalité. LOG4J recommande d'utiliser seulement quatre niveaux, avec la priorité de haute à faible, à savoir l'erreur, la prévient, les informations et le débogage. Selon le niveau défini ici, vous pouvez contrôler les commutateurs au niveau correspondant des informations de journal dans l'application. Par exemple, si le niveau d'information est défini ici, toutes les informations de journal de niveau de débogage dans l'application ne seront pas imprimées. Annexe Spécifie où les informations de journal sont sorties. Plusieurs destinations de sortie peuvent être spécifiées simultanément.
2.4.2 APPPENDANT DE DESTING DE SORTIE
Le système de journal LOG4J permet la sortie du journal à différents endroits, tels que la console (console), les fichiers (fichiers), les nouveaux fichiers sont générés en fonction des jours ou de la taille du fichier, et envoyés à d'autres endroits sous la forme de flux, etc.
Configurer l'appender, sa syntaxe est exprimée comme suit:
log4j.appender.appendername = entièrement.qualified.name.of.appenden
"entièrement.qualified.name.of.appender.class" peut spécifier l'une des cinq destinations suivantes:
1) .org.apache.log4j.consoleAPpender (Console)
2) .org.apache.log4j.fileAppender (fichier)
3) .org.apache.log4j.dailyrollingFileAppender (générer un fichier journal tous les jours)
4) .org.apache.log4j.rollingFileAPender (un nouveau fichier est généré lorsque la taille du fichier atteint la taille spécifiée)
5) .org.apache.log4j.writerAppender (Envoyer des informations de journal au format de flux à n'importe quel endroit spécifié)
(1).
(2) .FileAPpender Options
(3).
C'est-à-dire que le format correspondant est le suivant:
1) '.' Yyyy-mm: mensuel
2) '.' Yyyy-ww: hebdomadaire
3) '.' Yyyy-mm-dd: tous les jours
4) '.' Yyyy-mm-dd-a: deux fois par jour
5) '.' Yyyy-mm-dd-hh: horaire
6) '.' Yyyy-mm-dd-hh-mm: par minute
4.RollingFileAPpender Options
2.4.3 Format (mise en page) Disposition
Parfois, je veux formater ma propre sortie de journal en fonction de mes préférences. Log4j peut joindre une mise en page derrière l'appenner pour remplir cette fonction.
Configurer la disposition, sa syntaxe est exprimée comme suit:
log4j.appender.appendername.layout = entièrement.qualified.name.of.layout.classlog4j.appender.APPENDERNAM
La disposition fournit quatre styles de sortie de journal, comme suit:
(1) .org.apache.log4j.htmllayout (mise en page dans le formulaire de table html),
(2) .org.apache.log4j.patternlayout (le mode de mise en page peut être spécifié de manière flexible),
(3) .org.apache.log4j.simplelayout (contient le niveau et la chaîne d'informations des informations du journal),
(4) .org.apache.log4j.ttcclayout (y compris le temps de génération de journaux, le thread, la catégorie, etc.
Options htmllayout
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.
2. Options Patternlayout
ConversionPattern =% m% n: spécifie comment formater le message spécifié.
Ce qui doit être expliqué ici est la signification de plusieurs symboles dans le format d'information sur le journal:
Des modificateurs peuvent être ajoutés entre les caractères% et le motif pour contrôler leur largeur minimale, leur largeur maximale et leur alignement de texte. comme:
1)% 20C: Spécifiez 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.
2)% - 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, le signe "-" spécifie l'alignement gauche.
3)%. 30c: spécifiez le nom de la catégorie de sortie. La largeur maximale est de 30. Si le nom de la catégorie est supérieur à 30, les caractères supplémentaires à gauche seront coupés, mais s'ils sont inférieurs à 30, il n'y aura pas d'espaces.
4)% 20.30c: Si le nom de la catégorie est inférieur à 20, remplissez l'espace et alignez-le correctement. Si son nom est supérieur à 30 caractères, coupez les caractères supplémentaires de la gauche.
2.5.Log4J Exemple de configuration
La simplicité de la configuration log4j la fait se propager sur de plus en plus d'applications: les fichiers de configuration log4j implémentent un ensemble complet de fonctions telles que la sortie sur la console, les fichiers, les fichiers de retour, l'envoi de courrier de journal, la sortie sur les tables de journal de base de données et les balises personnalisées.
log4j.rootlogger = debug, console, a1, im log4j.addivity.org.apache = true
n s'appliquer à la console
log4j.appender.console = org.apache.log4j.consoleAppenderLog4j.appender.threshold = debug log4j.appenden log4j.appender.console.layout.conversionpattern =% d-% c -% - 4r [% t]% - 5p% c% x-% m% n
n s'appliquer aux fichiers
log4j.appender.file = org.apache.log4j.fileAppenderLog4j.appendender.file.file = file.loglog4j.appender.file.append = falselog4j.appender.file.layout = org.apache.log4j.patternlayoutLog4j.apprender.file.layout.Conversion) -% - 4r [% t]% -5p% c% x -% m% n
n s'appliquer au dossier de fichier
log4j.appender.rolling_file = org.apache.log4j.rollingFileAppenderLog4j.appenden ender.rolling_file.maxfilesize = 10kblog4j.appendender.rolling_file.maxbackupindex = 1Log4j.appender.rolling_file.layout = org.apache.log4j.patternlayoutlog4j.apprender.rolling_file.layout-ConversionPattern =% d-% c - 4r [ % c% x -% m% n
n s'appliquer à la prise
log4j.appender.socket = org.apache.log4j.rollingFileAppenderLog4j.appender.socket.remotehost = localhost log4j.appender.socket.port = 5001log4j.appender.socket.locationinfo = true = log4j.appender.socket.layout = org.apache.log4j.patternlayoutlog4j.appender.socet.layout.conversionpattern = [start]% d {date} [date]% n% p [priority]% n% x [ndc]% n% t [thread]% Facteur C [catégorie]% n% m [NDC]% N% t log4j.appender.lf5_appender = org.apache.log4j.lf5.lf5appender log4j.appendenn Envoyez des journaux à un e-mail
log4j.appender.mail = org.apache.log4j.net.smtpappensenderlog4j.appenden 10log4j.appender.mail.from=web@www.wuset.comlog4j.appendender.mail.smtphost=www.wusetu.comlog4j.appendender.mail.subject=log4j Message log4j.appender.mail.to=web@www.wusetu.comlog4j.appendender.mail.layout=org.apache.log4j.patternlayout log4j.appender.mail.layout.conversionpattern =% d-% c -% - 4r [% t]% - 5p% c% x-% m% n
n pour la base de données
log4j.appender.database = org.apache.log4j.jdbc.jdbcapprenderLog4j.appender.database.url = jdbc: mysql: // localhost: 3306 / testlog4j.apprender.database.driver = com.mysql.jdbc.Driver log4j.appender.database.user = rootlog4j.appender.database.password = log4j.appenden % m% n ') log4j.appendender.database.layout = org.apache.log4j.patternlayout log4j.appender.database.layout.conversionpattern =% d-% c -% - 4r [% t]% - 5p% c% x-% m% nlog4j.apprender.a1 = org.apache.log4j.dailling log4j.appender.a1.file = sampleMessages.log4j log4j.appender.a1.datePattern = yyyymmdd-hh'.log4j'log4j.appender.a1.layout = org.apache.log4j.xml.xmlayout
n Appeder personnalisé
log4j.appender.im = net.cybercorlin.util.logger.appender.imappensenderlog4j.appendender.im.host = mail.cybercorlin.net log4j.appender.im.usename = username log4j.appender.im.password = mot de passe log4j.apprender.im.recipent = [email protected]=org.apache.log4j.patternlayoutlog4j.appender.im.layout.conversionpattern = [framework]% d -% c -% - 4r [% t]% -5p% c% x -% m% n
3. Configurer log4j pour l'application Web Spring
Tout d'abord, vous devez ajouter l'instruction de configuration suivante au fichier web.xml:
<! - Pour éviter les conflits entre les projets, définissez un WebApprootKey unique -> <ftext-Param> <Am param-name> webApprootKey </ Param-Name> <Amvin-Value> MyProject.Root </ Param-Value> </ Context-Param> <! - Chargez le fichier de configuration Log4j.properties -> <context-param> <paramar> <Am param-value> /web-inf/classes/config/log4j/log4j.properties </ param-value> </ context-param> <! - Définissez l'intervalle de temps pour rafraîchir le fichier de configuration du journal, défini sur 60S ici -> <ftext-param> <param-name> Log4jrefreshInterval </ paramname> <param-valeur> 60000 </ param-Value> </ Context-Param> <! - Chargez l'écouteur LOG4J dans le framework Spring Log4JConfigListener -> <ouciner> <auditeur-classe> org.springframework.web.util.log4jconfigistener </ounerer-class> </diner>
Il est recommandé de définir la valeur de la propriété log4jconfiglocation sur: /web-inf/classes/log4j.properties, de sorte que lorsque nous faisons des tests, nous pouvons enregistrer correctement les informations du journal lorsque nous ne démarrons pas l'application Web. LOG4JConfigListener est une classe d'outils fournie par Spring. Il ouvre un thread de surveillance log4j et détecte les modifications de configuration du journal toutes les 60 secondes (définition de variable Log4JrefreshInterval), de sorte qu'il n'est pas nécessaire de redémarrer le service Web à chaque fois pour appliquer la nouvelle configuration. Dans Tomcat, aucune propriété du système n'est séparée en fonction des applications Web. Par conséquent, un "WebApprootKey" unique doit être défini pour chaque application Web, et nous l'avons nommé webapp.root. Après le démarrage de l'environnement, log4jconfigListener injectera la valeur dans la variable webApp.root.
4. Utilisez log4j dans le code
4.1. Obtenez l'enregistreur
À l'aide de log4j, la première étape consiste à obtenir un enregistreur de journal, qui sera responsable du contrôle des informations du journal.
Public Static Logger GetLogger (nom de chaîne)
Obtenez le bûcheron par le nom spécifié et, si nécessaire, créez un nouvel enregistreur pour le nom. Le nom est généralement nommé dans cette classe, comme:
STATIC LOGGER LOGGER = Logger.GetLogger (ServerWithLog4J.Class.getName ())
4.2. Lire le fichier de configuration
Après avoir obtenu le journaliste, la deuxième étape configurera l'environnement log4j, avec la syntaxe comme:
Si vous placez log4j.properties dans le répertoire racine du projet, vous ne pouvez pas non plus écrire cette phrase et le programme trouvera automatiquement le fichier de configuration.
BasicConfigurator.Configure (): utilisez automatiquement et rapidement l'environnement log4j par défaut. PropertyConfigurator.Configure (String ConfigFileName): Lisez les fichiers de configuration écrits à l'aide des fichiers de fonctionnalités de Java.
DomConfigurator.Configure (String FileName): Lisez les fichiers de configuration dans le formulaire XML.
Log4j est initialisé à l'aide des 3 configurateurs ci-dessus, et l'utilisation de PropertyConfigurator convient à tous les systèmes. La déclaration suivante.
PropriétéConfigurator.Configure ("log4j.properties");Pour le projet Java général, log4j peut être initialisé sans utiliser l'instruction ci-dessus. Log4j trouvera automatiquement le fichier de configuration sous ClassPath et l'initialise. Si Log4j ne peut pas initialiser automatiquement le fichier de configuration, la méthode ci-dessus doit être initialisée.
Remarque: Lors de l'initialisation du fichier de configuration, il est préférable de l'exécuter une seule fois lorsque le système démarre. S'il l'exécute plusieurs fois, l'un est un gaspillage de ressources, et l'autre est que pour l'ancienne version de Log4j, des problèmes peuvent survenir lors de l'utilisation de DailyRollingFileAPender.
4.3. Insérer des informations d'enregistrement (informations sur le journal du format)
Lorsque les deux étapes nécessaires sont terminées, vous pouvez facilement insérer les instructions de journalisation des différents niveaux de priorité partout où vous souhaitez enregistrer. La syntaxe est la suivante:
Logger.debug (message objet);