Heim >Java >javaLernprogramm >Einführung in die grundlegende Verwendung von Log4j

Einführung in die grundlegende Verwendung von Log4j

零下一度
零下一度Original
2017-06-28 14:40:112030Durchsuche

Einfache Konfiguration

#指定logger
# 配置Logger组件 
# 设定Log4j的日志级别(error warn info  debug)
# 输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=debug, Console, logfile
###################################################################################################################
#指定appender(目的地)
#设定Logger的Console(appender的名字)的Appender类型为控制台输出
#org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender

#输出的格式
#设定Console的Appender布局Layout
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
#                     ConversionPattern=%m%n :指定怎样格式化指定的消息
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n

###################################################################################################################
#设定Logger的logfile(appender的名字)的Appender类型为文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender

#设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=../logs/logstrore.log

#设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB

#Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4#设定logfile的Appender布局Layout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n
###################################################################################################################

Log4JEinführung

Log4J ist ein Open-Source-Projekt von Apache. Es handelt sich um ein Protokolloperationspaket. Mit Log4J können Sie das Ziel für die Protokollinformationsausgabe angeben, z. B. Konsole, Datei, CUI-Komponente, NT-Ereignislogger ; Sie können auch das Ausgabeformat jedes Protokolls steuern. Darüber hinaus kann durch die Definition des Protokollinformationsniveaus die Ausgabe des Protokolls sehr detailliert gesteuert werden. Das Interessanteste ist, dass diese Funktionen über eine Konfigurationsdatei flexibel konfiguriert werden können, ohne den Anwendungscode zu ändern.

Die Ausgabe von Protokollen in Anwendungen dient drei Zwecken:

l Überwachen Sie Änderungen an Variablen im Code und zeichnen Sie regelmäßig Daten in Dateien zur statistischen Analyse durch andere Anwendungen auf

l Verfolgen Sie die Code-Laufzeitverlauf als Grundlage für zukünftige Audits

l Fungiert als Debugger in der integrierten Entwicklungsumgebung und druckt Code-Debugging-Informationen in Dateien und Konsolen

Erforderlich Die gebräuchlichste Methode zur Ausgabe von Protokollen in a Das Programm besteht darin, Anweisungen in den Code einzubetten. Eine bessere Möglichkeit besteht darin, eine Protokolloperationsklasse zu erstellen, um solche Vorgänge zu kapseln, anstatt den Codekörper mit einer Reihe von Druckanweisungen zu füllen.

Angesichts der heutigen Betonung wiederverwendbarer Komponenten stellt uns Apache zusätzlich zur Entwicklung eines wiederverwendbaren Protokolloperationsklassennamens von Anfang bis Ende ein leistungsstarkes vorgefertigtes Protokoll zur Verfügung Operationspaket Log4J.

Log4J besteht hauptsächlich aus drei Hauptkomponenten:

l Logger: Verantwortlich für die Erstellung von Protokollen und die Möglichkeit, Protokollinformationen zu klassifizieren und zu filtern ausgegeben werden und welche Protokollinformationen ignoriert werden sollten

l Appender: Definiert das Ziel für die Ausgabe von Protokollinformationen und gibt an, wo die Protokollinformationen ausgegeben werden sollen. Diese Orte können Konsolen, Dateien, Netzwerkgeräte usw. sein.

l Layout: Geben Sie das Ausgabeformat der Protokollinformationen an

Diese drei Komponenten arbeiten zusammen, um Entwicklern die Aufzeichnung von Informationen nach Protokollinformationskategorien zu ermöglichen und das Ausgabeformat der Protokollinformationen und die Protokollspeicherung zu steuern Speicherort während der Programmausführung.

Ein Logger kann mehrere Appender haben, was bedeutet, dass Protokollinformationen gleichzeitig an mehrere Geräte ausgegeben werden können. Jeder Appender entspricht einem Layout und Layout bestimmt das Format der ausgegebenen Protokollinformationen.

Angenommen, je nach tatsächlichem Bedarf müssen die Protokollinformationen im Programm an die Konsole ausgegeben werden, auf der das Programm ausgeführt wird, und an eine bestimmte Datei. Wenn die Protokollinformationen an die Konsole ausgegeben werden, SimplLayout-Layout, wenn PatternLayout-Layout, wenn Protokollinformationen in eine Datei ausgegeben werden. Zu diesem Zeitpunkt ist die Beziehung zwischen den drei Komponenten Logger, Appender und Layout wie in der Abbildung dargestellt

Appender-Komponente (Ausgabezweck angeben)
Die Appender-Komponente von Log4J bestimmt, wo die Protokollinformationen ausgegeben werden. Neuerdings unterstützt Log4Js Appepnススr die folgenden Zwecke der Ausgabe von Protokollinformationen: 🎜>l

GUIComponent

Ein Logger kann mehreren Appendern gleichzeitig entsprechen Informationen eines Loggers können gleichzeitig an mehrere Ziele ausgegeben werden: Um zwei Appender für den RootLogger zu konfigurieren, können Sie den folgenden Konfigurationscode verwenden:

log4j.rootLogger =WARN,file,console rootLogger Protokollebene und Ausgabezweck konfigurieren;log4j.appender.file=org.apache.log4jRollingFileAppender

Log4j.appender.file=log.txt

log4j.appender.console=org.apache.log4j.ConsoleAppender

LayoutKomponente
Layout-Komponente wird verwendet, um das Ausgabeformat des Protokolls zu bestimmen. Sie hat die folgenden Typen:

l org.apache.log4j .HTMLLayout (Layout im HTML-Tabellenformat)

l org.apache.log4j.PatternLayout (der Layoutmodus kann flexibel angegeben werden)

l org.apache.log4j.SimpleLayout (enthält Protokollinformationen Ebene und Informationszeichenfolge)

l org.apache.log4j.TTCCLayout (enthält Protokollgenerierungszeit, Thread- und Kategorieinformationen)

Log4j Basic Verwendung

Um Log4J in einer Anwendung zu verwenden, konfigurieren Sie zunächst jede Komponente von Log4j in einer Konfigurationsdatei, und dann können Sie das Protokoll über die Log4JAPI im Programm bedienen

Konfigurationsdatei definieren
Log4J besteht aus drei wichtigen Komponenten: Logger, Appender und Layout. Log4J unterstützt das programmgesteuerte Festlegen dieser Komponenten im Programm und unterstützt auch die Konfiguration von Komponenten über Konfigurationsdateien. Die letztere Methode ist flexibler.

Log4J unterstützt zwei Konfigurationsdateiformate, eines ist das XML-Format und das andere ist eine Java-Eigenschaftendatei,


1. Logger-Komponente konfigurieren Die Syntax lautet:  
log4j.rootLogger = [ level ], appenderName1, appenderName2, …

Beispiel:

log4j.rootLogger =WARN,file,console

level: ist die Priorität der Protokollierung, unterteilt in OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL oder die von Ihnen definierte Ebene.


Log4j empfiehlt die Verwendung von nur vier Ebenen. Die Prioritäten von hoch nach niedrig sind ERROR>WARN>INFO>DEBUG. Über die hier definierten Ebenen können Sie das Ein- und Ausschalten der entsprechenden Protokollinformationsebene in der Anwendung steuern. Buchen Sie es zum Beispiel hier Wenn die INFO-Ebene definiert ist, werden nicht alle Protokollinformationen der DEBUG-Ebene in der Anwendung gedruckt.

appenderName: gibt an, wo die Protokollinformationen ausgegeben werden. Sie können mehrere Ausgabeziele gleichzeitig angeben.

Alle: Alle Protokolle drucken.

Aus: Alle Protokolle schließen.

Zum Beispiel: log4j.rootLogger=info,A1,B2,C3


2 >

Komponente

Die Syntax lautet:

log4j.appender.appenderName =vollständig qualifizierter.Name.der.Appender.Klasse.

Beispiel:

log4j.appender.console=org.apache.log4j .ConsoleAppender

„fully.qualified.name.of.appender.class“ kann eines der folgenden fünf Ziele angeben

:

 
1.org.apache.log4j.ConsoleAppender(Konsole)
  2.org.apache.log4j.FileAppender(Datei)
[Kann das Protokoll nur in eine Datei ausgeben, nicht empfohlen]
         3.org.apache.log4j.DailyRollingFileAppender(erzeugt jeden Tag eine Protokolldatei)
4.org.apache.log4j.RollingFileAppender (Generieren Sie eine neue Datei, wenn die Dateigröße die angegebene Größe erreicht)
5.org.apache.log4j.WriterAppender (Protokollinformationen im Streaming-Format an einen beliebigen angegebenen Ort senden)

A.

ConsoleAppender

Optionen

Threshold=WARN: Geben Sie die niedrigste Ausgabestufe von Protokollmeldungen an. ImmediateFlush=true: Der Standardwert ist true, was bedeutet, dass alle Meldungen sofort ausgegeben werden. Target=System.err: Standardmäßig: System.out, geben Sie die Ausgabekonsole an B.
FileAppender

Optionen
Threshold=WARN: Gibt die niedrigste Stufe der Protokollmeldungsausgabe an.

ImmediateFlush=true: Der Standardwert ist true, was bedeutet, dass alle Meldungen sofort ausgegeben werden.

File=mylog.txt: Geben Sie die Nachricht an, die in die Datei mylog.txt ausgegeben werden soll.
Append=false: Der Standardwert ist true, was bedeutet, dass die Nachricht der angegebenen Datei hinzugefügt wird. False bedeutet, dass die Nachricht den Inhalt der durch

angegebenen Datei überschreibt.
C.DailyRollingFileAppenderOptionen
Threshold=WARN: Geben Sie die niedrigste Ausgabestufe von Protokollmeldungen an.
ImmediateFlush=true: Der Standardwert ist true, was bedeutet, dass alle Meldungen sofort ausgegeben werden.
File=mylog.txt: Geben Sie die Nachricht an, die in die Datei mylog.txt ausgegeben werden soll.
Append=false: Der Standardwert ist true, was bedeutet, dass die Nachricht der angegebenen Datei hinzugefügt wird. False bedeutet, dass die Nachricht den Inhalt der angegebenen

-Datei überschreibt.
DatePattern='.'yyyy-ww: Rollen Sie die Datei einmal pro Woche, dh generieren Sie jede Woche eine neue Datei. Natürlich können Sie

auch Monate, Wochen, Tage, Stunden und Minuten angeben. Das entsprechende Format lautet also wie folgt:
1)'.'yyyy-MM: Jeden Monat
2)'.'yyyy-ww: jede Woche
3)'.'yyyy-MM-dd: Jeden Tag
4)'.'yyyy-MM-dd-a: zweimal täglich
               5)'.'yyyy-MM-dd-HH: Jede Stunde
                6)'.'yyyy-MM-dd-HH-mm: Jede Minute
D.RollingFileAppender Optionen
Threshold=WARN: Angeben Die niedrigste Ebene der Protokollnachrichtenausgabe.
ImmediateFlush=true: Der Standardwert ist true, was bedeutet, dass alle Meldungen sofort ausgegeben werden.
File=mylog.log: Geben Sie die Nachricht an, die in die Datei mylog.txt ausgegeben werden soll.
Append=false: Der Standardwert ist true, was bedeutet, dass die Nachricht der angegebenen Datei hinzugefügt wird, false bedeutet, dass die Nachricht den Inhalt der angegebenen Datei überschreibt

.
MaxFileSize=100 KB: Das Suffix kann KB, MB oder GB sein. Wenn die Protokolldatei die Größe

erreicht, wird sie automatisch gescrollt, d. h. der ursprüngliche Inhalt wird in die Datei mylog.log.1 verschoben.
MaxBackupIndex=2: Gibt die maximale Anzahl an Rolling-Dateien an, die generiert werden können.

3, konfigurieren Sie das Format der Protokollinformationen

Die Syntax lautet:
 1) log4j .appender.appenderName.layout=fully.qualified.name.of.layout.class
 "fully.qualified.name.of.layout.class" kann angegeben werden wie folgtEines von 4Formaten:

Beispiel: log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d %p %c.%M()-%m%n


          1.org.apache.log4j.HTMLLayout (Layout im HTML-Tabellenformat) enthält Optionen:

LocationInfo=true: Der Standardwert ist false, Java-Dateiname und Zeilennummer werden ausgegeben
           Titel=meine App-Datei: Der Standardwert ist Log4J Log Messages.

  2.org.apache.log4j.PatternLayout (kann Layoutmuster flexibel angeben) enthält Optionen:

ConversionPattern=%m%n :Geben Sie an, wie die angegebene Nachricht formatiert werden soll.

3.org.apache.log4j.SimpleLayout (enthält die Ebene und Informationszeichenfolge der Protokollinformationen)
  4.org.apache.log4j.TTCCLayout (einschließlich Protokollgenerierungszeit, Thread, Kategorie und andere Informationen)
                                                                                                                                                        %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
Die Bedeutung mehrerer Symbole im Protokollinformationsformat:  -X-Nummer: X-Informationen werden bei der Ausgabe linksbündig angezeigt; %p: Priorität der Ausgabeprotokollinformationen, d. h. DEBUG, INFO, WARN, ERROR, FATAL,
%d: Das Datum oder die Uhrzeit des Ausgabeprotokollzeitpunkts, das Standardformat ist ISO8601, Sie können das Format auch nachträglich angeben, zum Beispiel: %d{yyy MMM dd HH:mm:ss,SSS}, die Ausgabe ist ähnlich: 18. Oktober , 2002 22: 10:28,921
%r: Geben Sie die Anzahl der Millisekunden aus, die vom Start der Anwendung bis zur Ausgabe der Protokollinformationen gedauert haben
%c: Geben Sie die Kategorie aus, zu der die Protokollinformationen gehören, normalerweise den vollständigen Namen der Klasse
%t: Ausgabe der Name des Threads, der das Protokollereignis generiert hat
        %l: Der Ort, an dem das Ausgabeprotokollereignis aufgetreten ist, entspricht der Kombination aus %C.%M (%F:%L), einschließlich des Kategorienamens und des Threads wo es geschah, und die Anzahl der Zeilen im Code. Beispiel: Testlog4.main(TestLog4.java:10)
%x: Gibt die NDC (verschachtelte Diagnoseumgebung) aus, die dem aktuellen Thread zugeordnet ist, insbesondere in Multi-Client- und Multi-Thread-Anwendungen wie Java-Servlets.
%%: Geben Sie ein „%“-Zeichen aus.
%F: Geben Sie den Dateinamen aus, in dem die Protokollmeldung generiert wird.
%L: Geben Sie die Zeilennummer im Code aus.
%m: Geben Sie die Zeile aus Im Code angegebene Nummer. Meldung, spezifische Protokollinformationen werden generiert
%n: Wagenrücklauf und Zeilenvorschub ausgeben, Windows-Plattform ist „rn“, Unix-Plattform ist „n“, Protokollinformationen werden mit Zeilenvorschub ausgegeben

%M steht für den Namen der Methode
      


Sie können Modifikatoren zwischen % und den Musterzeichen hinzufügen, um deren minimale und maximale Breite zu steuern und Textausrichtung. Beispiel: 1)%20c: Geben Sie den Namen der Ausgabekategorie an. Die Mindestbreite beträgt 20, wenn der Kategoriename kleiner als 20 ist. 2)%-20c: Geben Sie den Namen der Ausgabekategorie an. Die Mindestbreite beträgt 20. Wenn der Kategoriename kleiner als 20 ist, gibt das „-“-Zeichen die Linksausrichtung an.
3)%.30c: Geben Sie den Namen der Ausgabekategorie an. Die maximale Breite beträgt 30. Wenn der Kategoriename größer als 30 ist, werden die zusätzlichen Zeichen auf der linken Seite abgeschnitten, wenn er jedoch kleiner als 30 ist , es wird keine Leerzeichen geben.
4)%20.30c: Wenn der Kategoriename weniger als 20 Zeichen lang ist, füllen Sie Leerzeichen aus und richten Sie ihn rechtsbündig aus. Wenn der Name länger als 30 Zeichen ist, schneiden Sie die Zeichen von links ab.

Um im Programm auf Log4J zuzugreifen, müssen Sie die Log4J-JAR-Datei verwenden.
Die Verwendung von Log4J im Programm umfasst die folgenden Prozesse:

l Besorgen Sie sich den Logger

l Lesen Sie die Konfigurationsdatei und konfigurieren Sie die Log4J-Umgebung

l Geben Sie die Protokollinformationen aus

Bevor wir Log4J lernen, müssen wir die beiden gemeinsamen Schnittstellen LogFactory und Log im allgemeinen Protokollpaket verstehen. Ihre Verwendung wird unten vorgestellt.

Protokollschnittstelle

Das allgemeine Protokollpaket unterteilt Protokollmeldungen in 6 Ebenen: FATAL (fatal), ERROR (Fehler), WARN (Warnung), INFO (Informationen), DEBUG (Debugging) ) und TRACE (Details). Unter ihnen hat FATAL die höchste Stufe und TRACE die niedrigste Stufe. Das allgemeine Protokollpaket verwendet einen Protokollebenenmechanismus, um den Inhalt des Ausgabeprotokolls flexibel zu steuern.

org.apache.commons.logging.Log-Schnittstelle stellt den Logger dar, der eine Reihe von Methoden zum Ausgeben von Protokollen bereitstellt:

l fatal(Object message): Gibt Protokollmeldungen der Stufe FATAL aus.

l Fehler (Objektmeldung): Protokollmeldung der Ebene FEHLER ausgeben.

l ……

l Trace (Objektnachricht): Protokollnachrichten auf TRACE-Ebene ausgeben.

Bei der oben genannten Methode zum Ausgeben von Protokollen wird diese Methode nur dann tatsächlich ausgeführt, wenn die Ebene des ausgegebenen Protokolls größer oder gleich der für das Protokoll konfigurierten Protokollebene ist. Wenn beispielsweise die Protokollebene des Loggers WARN ist, dann ist es im Programm fatal(), error() und warn() werden ausgeführt, die Methoden info(), debug() und Trace() jedoch nicht ausgeführt .

Die Log-Schnittstelle bietet außerdem eine Reihe von Methoden, um zu bestimmen, ob die Ausgabe von Protokollmeldungen einer bestimmten Ebene zulässig ist:

l isFatalEnabled()

l isErrorEnabled()

l ……

l isTraceEnabled()

Bevor das Programm eine Protokollmeldung einer bestimmten Ebene ausgibt, wird empfohlen, die obige Methode aufzurufen, um festzustellen, ob das Protokoll vorhanden ist Dieser Level darf ausgegeben werden, was zur Verbesserung der Anwendungsleistung beiträgt. Der folgende Code fügt beispielsweise zuerst die Protokollnachricht zum StringBuffer hinzu und ruft schließlich die debug()-Methode des Loggers auf, um das Protokoll auszugeben:

StringBuffer buf = new StringBuffer();

buf.append(" Login Successsul - ”);

buf.append(“Name:”);

buf.append(username);

log.debug (buf.toString() ; Alle Vorgänge sind redundant. Um die Leistung zu verbessern, können Sie die Methode isDebugEnabled() sinnvoll verwenden, um zu verhindern, dass die Anwendung redundante Vorgänge ausführt:

if(log.isDebugEnabled){

StringBuffer buf = new StringBuffer();

buf.append(“Login Successsul - ”);

buf.append(“Name:”);

buf.append(username);

log.debug(bug.toString());

}

(

zwei)LogFactorySchnittstelle org.apache.commons.logging.LogFactory-Schnittstelle bietet zwei statische Methoden zum Abrufen von Logger-Instanzen:

public static Log getLog(String name)throws LogConfigurationException;

public static Log getLog(Class class) löst LogConfigurationException aus;

Die erste getLog()-Methode verwendet den Namensparameter als Namen des Loggers; die zweite getLog()-Methode verwendet den Namen der durch den Klassenparameter angegebenen Klasse als Namen des Loggers Logger. Das Folgende ist eine Implementierung der zweiten getLog()-Methode:

public static Log getLog(Class class) throws LogConfigurationException{

getLog(class.getName); //call getLog(String name)

}

Zusammenfassung

Log4J besteht hauptsächlich aus drei Hauptkomponenten: Logger, Appender und Layout. Logger steuert die Ausgabe von Protokollinformationen; Appender bestimmt das Ausgabeziel von Protokollinformationen; Layout bestimmt das Ausgabeformat von Protokollinformationen. Log4J ermöglicht Benutzern die flexible Konfiguration dieser Komponenten in Konfigurationsdateien. Es ist sehr praktisch, Log4J in einem Programm zu verwenden. Sie müssen nur zuerst den Logger abrufen, dann die Konfigurationsdatei lesen und die Log4J-Umgebung konfigurieren. Anschließend können Sie die entsprechende Methode der Logger-Klasse aufrufen, um Protokolle zu generieren, wo immer Sie sie ausgeben müssen meldet sich im Programm an.

Das obige ist der detaillierte Inhalt vonEinführung in die grundlegende Verwendung von Log4j. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn