Log4j produit plusieurs fichiers journaux personnalisés
Si vous avez besoin de sortir des fichiers journaux indépendants dans les applications réelles, comment pouvez-vous séparer le contenu requis du journal d'origine et former un fichier journal séparé?
Examinons d'abord un fichier log4j.properties commun, qui enregistre les journaux dans les fichiers console et test.log:
La copie de code est la suivante:
log4j.rootlogger = debug, stdout, logfile
log4j.appenden
log4j.appenden
log4j.appenden
log4j.appenden
log4j.appender.logfile.file = log / test.log
log4j.appender.logfile.maxfilesize = 128 Mo
log4j.appender.logfile.maxbackupindex = 3
log4j.appender.logfile.layout = org.apache.log4j.patternlayout
log4j.appender.logfile.layout.conversionpattern =% d {yyyy-mm-dd hh: mm: ss}% -5p [% t]% c.% m (% l) -% m% n
Et si plusieurs fichiers journaux devaient être sortis dans la même classe? En fait, la vérité est la même.
La copie de code est la suivante:
Logger de journal statique privé1 = logfactory.getLog ("MyLogger1");
Logger de journal statique privé2 = logfactory.getLog ("MyLogger2");
La configuration dans log4j.properties est la suivante:
La copie de code est la suivante:
log4j.logger.mylogger1 = débogage, test1
log4j.appender.test1 = org.apache.log4j.fileApender
log4j.appender.test1.file = log / test1.log
log4j.appender.test1.layout = org.apache.log4j.patternlayout
log4j.appender.test1.layout.conversionPattern =% d {yyyy-mm-dd hh: mm: ss}% -5p [% t]% c.% m (% l) -% m% n
log4j.logger.mylogger2 = débogage, test2
log4j.appender.test2 = org.apache.log4j.fileApender
log4j.appender.test2.file = log / test2.log
log4j.appender.test2.layout = org.apache.log4j.patternlayout
log4j.appender.test2.layout.conversionPattern =% d {yyy-mm-dd hh: mm: ss}% -5p [% t]% c.% m (% l) -% m% n
Différents journaux doivent être utilisés pour différents journaux (par exemple, Logger1.info ("ABC") doit être utilisé pour la sortie pour tester1.log).
Un autre problème est que ces journaux personnalisés sont sortis dans les journaux configurés par log4j.rootlogger par défaut. Ne vous inquiétez pas, voici un interrupteur:
log4j.additivité.
Il est utilisé pour définir l'opportunité de le sortir dans le journal configuré par log4j.rootlogger en même temps.
Cependant, cette méthode a une petite faille, c'est-à-dire que le nom de classe dans le journal imprimé ne peut être que MyLogger ou MyLogger2.
2 chemins de configuration dynamique
Si le chemin de journal requis par le programme doit être constamment modifié et qu'il est impossible de modifier le fichier de configuration à chaque fois, vous pouvez utiliser des variables d'environnement pour le résoudre.
La configuration de log4j est la suivante:
La copie de code est la suivante:
log4j.rootlogger = debug, infolog, debuglog
#info journal
log4j.appender.infolog = org.apache.log4j.dailyrollingFileAPpender
log4j.appender.infolog.file = $ {log.dir} / $ {log.info.file}
log4j.appenden
log4j.appender.infolog.Threshold = info
log4j.appender.infolog.layout = org.apache.log4j.patternlayout
log4j.appender.infolog.Layout.ConversionPattern =% d {yyyy-mm-dd hh: mm: ss}% -5p [% t]% c.% m (% l) -% m% n
Journal #debug
log4j.appenden
log4j.appender.debuglog.file = $ {log.dir} / $ {log.debug.file}
log4j.appender.debuglog.threshold = debug
log4j.appender.debuglog.maxfilesize = 128 Mo
log4j.appender.debuglog.maxbackupindex = 3
log4j.appender.debuglog.layout = org.apache.log4j.patternlayout
log4j.appender.debuglog.layout.conversionPattern =% d {yyyy-mm-dd hh: mm: ss}% -5p [% t]% c.% m (% l) -% m% n
À l'heure actuelle, avant d'utiliser le journal pour imprimer le journal, vous devez utiliser le système pour définir le chemin de sortie et les variables d'environnement de nom de fichier:
La copie de code est la suivante:
System.SetProperty ("Log.Dir", LogDir);
System.SetProperty ("log.info.file", infologfilename);
System.SetProperty ("Log.debug.file", DebugLogFileName);
Attachement: la signification du format du paramètre de motif
% c Le nom complet de la classe à laquelle appartient les informations du journal
% D produit la date ou l'heure du point de temps du journal. : 2013-8-19-22:10:28
% f Le nom de classe de la classe à laquelle appartient les informations du journal
% l L'événement de journal de sortie se produit, c'est-à-dire l'instruction qui publie les informations du journal dans quelle ligne de la classe est située
% M Sortie Les informations spécifiées dans le code, telles que le message dans le journal (message)
% N sort une rupture de ligne de retour du chariot, la plate-forme Windows est "/ r / n", et la plate-forme Unix est "/ n"
% P Priorité de sortie, c'est-à-dire le débogage, les informations, les avertissements, l'erreur, fatal. S'il est sorti en appelant Debug (), il s'agit de débogage, et ainsi de suite
% r Sortie Le nombre de millisecondes prélevées depuis le début de l'application pour produire les informations du journal
% T produit le nom de thread qui génère l'événement de journal