Im vorherigen Artikel habe ich Sie in das detaillierte Tutorial zu Java Log4J vorgestellt. Einzelheiten finden Sie unten unten.
Erstens bieten wir Ihnen log4j.jar download: http://logging.apache.org/log4j/1.2/download.html
1. Verwenden Sie LOG4J für Java Web Project
1. Fügen Sie in der Datei web.xml hinzu
<!-log4j-> <context-param> <param-name> webappootkey </param-name> <param-value> com.hsinghsu.testsssh.webapp.root </param-value> </condex t -param> <context-param> <param-name> log4jconfigLocation </param-name> <param-value> /web-inf/classes/log4j.properties </param-value> </context-par am> <context -PARAM> <PARAMEL-NAME> LOG4JREFRESHIGNVAL </param-name> <param-value> 600000 </param-value> </context-param>
2. Fügen Sie log4j.properties Datei hinzu
log4j.rootcategory = info, stdout, r log4j.appender.stdout = org.apache.log4j.conoleAppender log4j.appender.stdout.layout = org.apache.log4j.p atternLayout log4j.appender.stdout.layout.convernig. ]%p [%t]%C.%M (%l) Avatar .log ## Linux -Protokolle Dateipfad #log4j.appender.r.file = $ {com.hsinghsu.testsssh.webapp.root} /log/Testlog.log ## Windows Logs -Datei Path Log4j.appender .r.File = D: //eclipspace//testsssh//webcontent//web-inf//tenstlog.log log4j.appender.r.layout = org.apache.log4j.patternLayout #log4j.appender.lay out.conversionPattern =%d d d d d d log4j.appender.lay out.conversionPattern =%d d d d d d d Log4j.appender.lay out.conversionPattern . j.logger .org.apache.commons = error #log4j.logger.org.apache.struts = warn #log4j.logger.org.displayTag = error #log4j.logger.org.springFramework = Inf O # # #log4j.logger. com.ibatis. org.hibernate = debug log4j.logger.org.hibernate = info #log4j.logger.org.logicalcobwebs = Warn
3. Verwenden Sie log4j
Verwenden Sie beispielsweise Log4J in userServiceImpl.java.
Paket com.hsinghsu.TestSsh.Service.impl; Dao .Userdao; endgültig statischer Logger logger = logger.getLogger (userServiceImpl.class); - UserServiceImpl-Anmeldemethode Name: "+Name+Passwort:"+Passwort); User User = UserDao.getUserByName (Name); if (user! {Return True;
2. Detaillierte Erläuterung der Parameter log4j.Properties
Die Protokollebenen sind in Debug (Debug -Informationen), Info (allgemeine Informationen), Warnung (Warninformationen), Fehler (Fehlerinformationen) und fatal (fatale Fehlerinformationen) unterteilt.
Log4J unterstützt zwei Konfigurationsdateiformate, eine XML -Formatdatei, die andere ist eine Java -Eigenschaftsdatei log4j.properties.
1. Konfigurieren Sie den Root Logger
Logger ist verantwortlich für den Umgang mit den meisten Vorgängen der Protokollierung, und seine Syntax lautet:
log4j.rootlogger = [stufe], appendername1, appendername2,…
Level: Ist die Priorität der Protokollierung, unterteilt in Off, Fatal, Irrtum, Warn, Info, Debugug, ALL oder das von Ihnen definierte Niveau.
appendername: Ist der Name des angegebenen Ausgangsziels für Protokollinformationen.
Zum Beispiel: log4j.rootlogger = info, a1, b2, c3
In den frühen Log4J -Versionen implementierte org.apache.category die Funktion eines Protokolls und erweiterte dann die Kategorieklasse mit Logger, sodass log4j.rootcategory auch verwendet werden kann.
Zum Beispiel: log4j.rootcategory = info, a1, a2
2. Konfigurieren Sie den Ziel Appender für die Ausgabe von Protokollinformationen
Appender ist für die Steuerung der Ausgabe von Protokollierungsvorgängen verantwortlich und seine Syntax ist:
log4j.appender.appendername = vollständig.qualified.name.of.appender.class
Unter ihnen hat "vollständig.qualified.name.of.appender.class" die folgenden Typen:
I.org.apache.log4j.conoleAppender (Konsole)
Es gibt mehrere Optionen:
Schwellenwert = WARN: Gibt die niedrigste Ausgabeebene von Protokollnachrichten an.
CORFOIREFLUSH = TRUE: Der Standardwert ist wahr, was bedeutet, dass alle Nachrichten sofort ausgegeben werden.
Target = system.err: standardmäßig ist es: system.out, geben Sie die Ausgangskonsole an
ii.org.apache.log4j.fileAppender (Datei)
Es gibt mehrere Optionen:
Schwellenwert = WARN: Gibt die niedrigste Ausgabeebene von Protokollnachrichten an.
CORFOIREFLUSH = TRUE: Der Standardwert ist wahr, was bedeutet, dass alle Nachrichten sofort ausgegeben werden.
Datei = myLog.txt: Gibt an, dass die Nachricht an die Datei myLog.txt ausgegeben wird.
Append = false: Der Standardwert ist wahr, was bedeutet, dass die angegebene Datei die Nachricht in den angegebenen Dateiinhalt überschreibt.
iii.org.apache.log4j.dailyrollingFileAppender (generiert jeden Tag eine Protokolldatei)
Es gibt mehrere Optionen:
Schwellenwert = WARN: Gibt die niedrigste Ausgabeebene von Protokollnachrichten an.
CORFOIREFLUSH = TRUE: Der Standardwert ist wahr, was bedeutet, dass alle Nachrichten sofort ausgegeben werden.
Datei = A.Log: Gibt an, dass die Nachricht an die A.log -Datei ausgegeben wird, die standardmäßig vom Root -Pfad des Webservers startet.
Append = false: Der Standardwert ist wahr, was bedeutet, dass die angegebene Datei die Nachricht in den angegebenen Dateiinhalt überschreibt.
DatePattern = '.' Yyyy-ww: scrollen Sie die Datei einmal pro Woche, dh, generieren Sie jede Woche eine neue Datei. Natürlich können Sie auch monatlich, Woche, Tag, Zeit und Minute angeben. Das heißt, das entsprechende Format lautet wie folgt:
'.'yyyy-mm: monatlich
'.'yyyy-ww: wöchentlich
'.'yyyy-mm-dd: Jeden Tag
'.'yyyy-mm-dd-a: zweimal am Tag
'.'yyyy-mm-dd-hh: stündlich
'.'yyyy-mm-dd-hh-mm: pro Minute
iv.org.apache.log4j.rollingFileAppender (eine neue Datei wird generiert, wenn die Dateigröße die angegebene Größe erreicht.
Es gibt mehrere Optionen:
Schwellenwert = WARN: Gibt die niedrigste Ausgabeebene von Protokollnachrichten an.
CORFOIREFLUSH = TRUE: Der Standardwert ist wahr, was bedeutet, dass alle Nachrichten sofort ausgegeben werden.
Datei = A.Log: Gibt an, dass die Nachricht an die A.log -Datei ausgegeben wird, die standardmäßig vom Root -Pfad des Webservers startet.
Append = false: Der Standardwert ist wahr, was bedeutet, dass die angegebene Datei die Nachricht in den angegebenen Dateiinhalt überschreibt.
MaxFileSize = 100KB: Das Suffix kann KB, MB oder GB sein.
Maxbackupindex = 2: Gibt die maximale Anzahl von Scroll -Dateien an, die generiert werden können.
v.org.apache.log4j.writerAppender (Protokollinformationen im Stream -Format an einen bestimmten Ort senden)
Zum Beispiel:
log4j.appender.r = org.apache.log4j.dailyrollingFileAppender
log4j.appender.r.file = d: //eclipspace//testsssh//webcontent//web-inf//testlog.log
3. Konfigurieren Sie das Format (Layout) von Protokollinformationen
Das Layout ist für die Formatierung der Ausgabe von Appender verantwortlich, und seine Syntax lautet:
log4j.appender.appendername.layout = vollständig.qualified.name.of.layout.class
Unter ihnen hat "vollständig.qualified.name.of.layout.class" die folgenden Typen:
i.org.apache.log4j.htmllayout (Layout in HTML -Tabellenformular)
Es gibt mehrere Optionen:
LocationInfo = true: Der Standardwert ist falsch, geben Sie den Java -Dateinamen und die Zeilennummer aus
Titel = meine App -Datei: Der Standardwert ist log4J -Protokollnachrichten.
ii.org.apache.log4j.patternLayout (Der Layout -Modus kann flexibel angegeben werden)
Es gibt mehrere Optionen:
ConversionSpattern =%M%N: Gibt an, wie die angegebene Nachricht formatiert wird.
-X Nummer: Linksausrichtung Wenn x Informationen ausgegeben werden;
%P: Die Priorität der Ausgabeprotokollinformationen, d. H. Debug, Info, Warn, Fehler, tödlich,
%d: Das Datum oder die Uhrzeit des Protokollzeitpunkts ist ausgegeben. Ähnlich: 18. Oktober 2002 Tag 22:10:28, 921
%R: Die Anzahl der Millisekunden zum Ausgang vom Anwendungsstart zur Ausgabe dieser Protokollinformationen
%C: Die Kategorie, zu der die Ausgangsprotokollinformationen gehört, ist normalerweise der vollständige Name der Klasse
%T: Ausgabe des Threadnamens, der das Protokollereignis generiert
%L: Das Ausgangsprotokollereignis erfolgt am Ort des Auftretens von%C.%M (%f:%l), einschließlich des Kategoriennamens, des Vorkommens -Threads und der Anzahl der Zeilen im Code. Beispiel: testlog4.main (testlog4.java:10)
%X: Die Ausgabe von NDC (neshed diagnostische Umgebung), die mit dem aktuellen Thread verbunden ist, insbesondere in Anwendungen wie Java-Servlets mit Multi-Kunden-Multi-Threading.
%%: Ausgabe eines "%" -Scharakters
%F: Der Dateiname, bei dem die Ausgabebeinmeldung generiert wurde
%L: Zeilennummer im Ausgabescode
%M: Die im Ausgabescode angegebene Meldung und die generierten spezifischen Protokollinformationen
% N: Ausgabe eines Wagenrücklaufleitungsausbruchs, Windows -Plattform ist "/r/n". Die Unix -Plattform ist "/n" für Ausgabeprotokollinformationszeilen zwischen % und Moduszeichen, um die minimale Breite und die maximale Breite zu steuern. Breite und Textausrichtung. wie:
%20c: Gibt den Namen der Ausgangskategorie an, die minimale Breite 20. Wenn der Name der Kategorie weniger als 20 beträgt, ist er standardmäßig rechts ausgerichtet.
%-20c: Gibt den Namen der Ausgangskategorie an.
%.30c: Geben Sie den Namen der Ausgangskategorie an. keine Leerzeichen sein.
%20.30c: Wenn der Name der Kategorie weniger als 20 ist, füllen Sie den Raum aus und richten Sie nach rechts.
Zum Beispiel: %-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 (enthält die Ebene und Informationszeichenfolge von Protokollinformationen)
iv.org.apache.log4j.ttcclayout (einschließlich Zeit, Thread, Kategorie usw. der Protokollgenerierung)
4. Andere
log4j.logger.com
Geben Sie an, dass alle Klassen unter dem Com.neusoft -Paket Debug sind.
log4j.logger.com.opensymphony.oScache = Fehler
log4j.logger.net.sf.navigator = Fehler
Diese beiden Sätze setzen die Pegel der Fehler, die unter diesen beiden Paketen auftreten.
log4j.logger.org.apache.commons = Fehler
log4j.logger.org.apache.struts = warn
Diese beiden Sätze sind das Paket von Streben.
log4j.logger.org.displayTag = Fehler
Dieser Satz ist das DisplayTag -Paket. (Verwendet auf der QC -Fragenliste)
log4j.logger.org.springframework = debug
Dieser Satz ist ein Frühlingspaket.
log4j.logger.org.hibernate.ps.PreeParedStatementCache = Warn
log4j.logger.org.hibernate = debug
Diese beiden Sätze sind das Hibernate -Paket.
3. Schreiben Sie Protokolle in mehrere Dateien.
LOG4J -Konfiguration:
log4j.rootcategory = info, stdout
log4j.appender.stdout = org.apache.log4j.conoleAppender
log4j.appender.stdout.layout = org.apache.log4j.patternLayout
log4j.appender.stdout.layout.ConversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [Colorclouds]%p [%t]%C.%m (%l) | N
log4j.logger.net.sf.navigator = info
log4j.logger.org.springframework = info
log4j.logger.runlogger = info, r
log4j.appender.r = org.apache.log4j.rollingFileAppender
log4j.appender.r.file = g: //log//runlog.log
log4j.appender.r.maxFileSize = 51200KB
#log4j.appender.r.file = $ {com.huawei.icity.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.appender.b = org.apache.log4j.rollingFileAppender
#log4j.appender.b.file = g: //log//businesslog.log
#log4j.appender.b.maxFileSize = 51200KB
#log4j.appender.b.layout = org.apache.log4j.patternLayout
#log4j.appender.b.layout.ConversionPattern =%d {yyyy-mm-dd hh/: mm/: ss, ss} [Colorclouds]%p [%t]%C.%m (%l) | m%n
log4j.logger.interfacelogger = info, i
log4j.appender.i = org.apache.log4j.rollingFileAppender
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 {yyyy-mm-dd hh/: mm/: ss, ss} [Colorclouds-Schnittstelle]%p [%t]%C.%m (%l) | %N
Java -Anruf:
org.apache.commons.logging.log; getLog ("runlogger"); // log privat static log interfacelog = logfactory.getLog ("interfacelogger"); // Interface Log public String () Ausnahme außer Ion {interfacelog.info ("====== >> Anfrage ausführen ");
Im Folgenden ist eine Möglichkeit, log4j in einem Webprojekt zu konfigurieren
1. Ändern Sie dynamisch die Datensatzstufe und Richtlinie, und es ist nicht erforderlich, die Webanwendung neu zu starten, wie in "Effektives Unternehmen Java" angegeben.
2. Setzen Sie die Protokolldatei auf/web-inf/Protokolle/ohne einen absoluten Pfad zu schreiben.
3.. Sie können log4j.properties und andere Eigenschaften zusammen mit / web-inf / anstelle von Klassenpfaden platzieren.
Fügen Sie in web.xml hinzu
<!-Wenn der WebaPootKey-Parameter nicht definiert ist, ist das WebaPootKey der Standard "webapp.root"->
<Context-Param> <param-name> webappootkey </param-name> <param-value> xxx.root </param-value> </context-param /param-name> <param-value> web-inf/log4j.properties </param-value> </context-param> <context-param> <param-name> log4jreFreshInterval </param-name> <param-value > 60000 </param-value> </context-param> <hörer> <hörerklasse> org.springframework.web.util.log4jconfigListener </Listener-Klasse> </Listener>
In der obigen Konfiguration wird log4JConfigListener die Konfigurationsdatei in Web-INF/log4j.propeties gelesen.
Öffnen Sie einen Watchdog -Thread, um die Änderungen der Konfigurationsdatei alle 60 Sekunden zu scannen.
Und drücken Sie den Pfad des Webverzeichnisses in eine Systemvariable namens webapp.root.
Anschließend kann der Standort der Logfile in log4j.properties definiert werden
log4j.appender.logfile.file = $ {webapp.root} /web-inf/logs/myfuse.log
Wenn es mehrere Webanwendungen gibt und befürchten, dass die WebApp.root-Variablen wiederholt werden, können Sie WebAppootKey in Context-Param definieren.
Die oben genannten Fähigkeiten dieses Artikels zur Analyse der Java -Web -Log4J -Konfiguration und der Konfiguration von Log4J in Webprojekten.