1. Vorteile von Log4j
Log4j ist ein Open-Source-Projekt von Apache. Durch die Verwendung von Log4j können wir auch das Ausgabeformat der einzelnen Protokollinformationen steuern Detail. Generierungsprozess. Das Interessanteste ist, dass diese über eine Konfigurationsdatei flexibel konfiguriert werden können, ohne den Anwendungscode zu ändern.
Die Vorteile von log4j sind:
(1) Durch Ändern der Konfigurationsdatei können Sie das Ziel der Protokollinformationskonsole, der Datei, der GUI-Komponente, sogar des Socket-Servers, des NT-Ereignisrekorders, des UNIX-Syslog-Daemons usw. festlegen.
(2) Durch Ändern der Konfigurationsdatei können Sie die Ebene jeder Protokollnachricht definieren, um zu steuern, ob sie ausgegeben wird. Während der Systementwicklungsphase können detaillierte Protokollinformationen gedruckt werden, um den Systembetrieb zu verfolgen. Nachdem das System stabil ist, kann die Protokollausgabe deaktiviert werden, wodurch der Systembetrieb verfolgt und gleichzeitig Junk-Code reduziert wird (System.out.println(.. ....)Warten).
(3) Die Verwendung von log4j erfordert einen einheitlichen Protokollmechanismus für das gesamte System, der der Systemplanung förderlich ist.
2. Konfigurationsdatei
Log4j besteht aus drei wichtigen Komponenten: der Priorität der Protokollinformationen, dem Ausgabeziel der Protokollinformationen und dem Ausgabeformat der Protokollinformationen. Zu den Prioritäten der Protokollinformationen von hoch bis niedrig gehören FATAL, ERROR, WARN, INFO, DEBUG, TRACE und ALL, die jeweils zur Angabe der Wichtigkeit dieser Protokollinformationen verwendet werden auf der Konsole gedruckt werden Oder in der Datei; und das Ausgabeformat steuert den Anzeigeinhalt der Protokollinformationen.
2.1 Priorität der Protokollinformationen
Log4j empfiehlt die Verwendung von nur vier Ebenen. Die Prioritäten von hoch nach niedrig sind ERROR, WARN, INFO und DEBUG. Über die hier definierten Ebenen können Sie das Ein- und Ausschalten der entsprechenden Protokollinformationsebene in der Anwendung steuern. Wenn hier die INFO-Ebene definiert ist, werden alle Protokollinformationen unterhalb der INFO-Ebene in der Anwendung nicht gedruckt.
2.2 Nutzung von Ausgabequellen
Das selektive Aktivieren oder Deaktivieren von Protokollierungsanforderungen ist nur ein Teil der Funktionalität von Log4j. Log4j ermöglicht die Ausgabe von Protokollierungsanfragen an mehrere Ausgabequellen. In Log4j-Begriffen wird eine Ausgabequelle als Appender bezeichnet.
Appender umfasst Konsole, Dateien, GUI-Komponenten, Remote-Socket-Server, JMS, NT-Ereignisprotokollierer und Remote-UNIX-Syslog-Daemons (Remote-UNIX-Hintergrundprotokolldienst). Es kann auch asynchron aufzeichnen. Ein Logger kann mehr als einen Appender festlegen. Fügen Sie einem bestimmten Logger mithilfe der addAppender-Methode einen Appender hinzu. Für einen bestimmten Logger wird jede gültige Protokollanforderung an alle Appender des Loggers und die Appender des übergeordneten Loggers des Loggers weitergeleitet.
2.2.1 ConsoleAppender
Wenn ConsoleAppender verwendet wird, werden Protokollinformationen in die Konsole geschrieben. Der Effekt entspricht dem direkten Drucken von Informationen in System.out.
2.2.2 FileAppender
Mit FileAppender werden die Protokollinformationen in die angegebene Datei geschrieben. Dies sollte eine häufiger genutzte Situation sein. Dementsprechend sollte der Dateiname der Protokollausgabe in der Konfigurationsdatei angegeben werden. Die folgende Konfiguration gibt den Protokolldateinamen log.txt an.
log4j.appender.appendername.File=log.txt Beachten Sie, dass appendername in der spezifischen Konfiguration durch den Alias von Appender ersetzt wird.
Hinweis: Problem mit dem angegebenen Protokolldateipfad
2.2.3 DailyRollingAppender
Sie können FileAppender verwenden, um Protokollinformationen in eine Datei auszugeben. Wenn die Datei jedoch zu groß ist, ist das Lesen umständlich. Zu diesem Zeitpunkt können Sie DailyRollingAppender verwenden. DailyRollingAppender kann Protokollinformationen nach Datum getrennt in Dateien ausgeben. Die Konfigurationsdatei generiert jeden Tag eine Protokolldatei (die Uhrzeit kann eingestellt werden), und jede Protokolldatei zeichnet nur die Protokollinformationen dieses Tages auf:
Kopieren Sie den Codecode wie folgt:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'yyyy-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
Eine neue Datei wird generiert, wenn die Dateigröße die angegebene Größe erreicht.
Kopieren Sie den Codecode wie folgt:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Kontrollieren Sie die maximale Protokolldateigröße
log4j.appender.appendername.MaxFileSize=100 KB
# Protokolldateien archivieren (hier eine Sicherungsdatei)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
Diese Konfigurationsdatei gibt den Appendernamen der Ausgabequelle an, bei dem es sich um eine rotierende Protokolldatei handelt. Die größte Datei ist 100 KB groß. Wenn eine Protokolldatei die maximale Größe erreicht, benennt Log4J automatisch rlog.log in rlog.log.1 um, erstellt dann eine neue rlog.log-Datei und rotiert der Reihe nach.
2.2.5 WriterAppender
Senden Sie Protokollinformationen im Streaming-Format an einen beliebigen Ort.
2.3 Layoutkonfiguration
Layout gibt den Stil der Protokollinformationsausgabe an.
2.3.1 Layoutstil
Kopieren Sie den Codecode wie folgt:
org.apache.log4j.HTMLLayout (Layout im HTML-Tabellenformat),
org.apache.log4j.PatternLayout (kann Layoutmuster flexibel angeben),
org.apache.log4j.SimpleLayout (enthält die Ebene und Informationszeichenfolge der Protokollinformationen),
org.apache.log4j.TTCCLayout (enthält Protokollgenerierungszeit, Thread, Kategorie usw. Informationen)
2.3.2 Format
Kopieren Sie den Codecode wie folgt:
%m gibt die im Code angegebene Nachricht aus
%p Ausgabepriorität, nämlich DEBUG, INFO, WARN, ERROR, FATAL
%r Gibt die Anzahl der Millisekunden aus, die vom Start der Anwendung bis zur Ausgabe der Protokollinformationen gedauert haben.
%c gibt die Kategorie aus, zu der es gehört, normalerweise den vollständigen Namen der Klasse.
%t gibt den Namen des Threads aus, der das Protokollereignis generiert hat
%n gibt ein Wagenrücklauf- und Zeilenvorschubzeichen aus, das auf der Windows-Plattform „rn“ und auf der Unix-Plattform „n“ ist.
%d gibt das Datum oder die Uhrzeit des Protokollzeitpunkts aus. Das Standardformat ist auch nachträglich möglich, z. B.: %d{yyy MMM dd HH:mm:ss,SSS} : 18. Oktober 2002. 22:10:28.921
%l Gibt den Ort aus, an dem das Protokollereignis aufgetreten ist, einschließlich des Kategorienamens, des Threads, in dem es aufgetreten ist, und der Zeilennummer im Code. Beispiel: Testlog4.main(Test Log4.java:10)
3. Legen Sie die Protokollausgabestufen für verschiedene Appender fest
Dies kann durch Ändern des Appender-Schwellenwerts in der Konfiguration erreicht werden, wie im folgenden Beispiel:
Konfigurationsdatei:
log4j.rootLogger = debug,A,B,C
#Ausgabe an die Konsole
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# Ausgabe in Protokolldatei
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = logs/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG # Protokolle über EBUG-Ebene ausgeben
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# Ausnahmeinformationen in einer separaten Datei speichern
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Name der Ausnahmeprotokolldatei
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ERROR #Nur Protokolle über der FEHLER-Stufe ausgeben
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
Beispiel:
Kopieren Sie den Codecode wie folgt:
öffentliche Klasse TestLog4j
{
public static void main(String[] args)
{
PropertyConfigurator.configure("D:/Code/conf/log4j.properties");
Logger logger = Logger.getLogger(TestLog4j.class);
logger.debug("debug");
logger.error("error");
}
}