1. Konfigurationsdatei
Das Grundformat der Log4J-Konfigurationsdatei ist wie folgt:
Kopieren Sie den Codecode wie folgt:
#Konfigurieren Sie den Root-Logger
log4j.rootLogger = [level], appenderName1, appenderName2, …
#Konfigurieren Sie den Appender für die Ausgabe der Protokollinformationen
log4j.appender.appenderName = vollständig qualifizierter Name.of.appender.class
log4j.appender.appenderName.option1 = Wert1
…
log4j.appender.appenderName.optionN = valueN
#Konfigurieren Sie das Format (Layout) der Protokollinformationen
log4j.appender.appenderName.layout = vollständig qualifizierter Name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
Wobei [Ebene] die Protokollausgabeebene ist, gibt es insgesamt fünf Ebenen:
Kopieren Sie den Codecode wie folgt:
FATAL 0
FEHLER 3
WARNUNG 4
INFO 6
DEBUG 7
Appender ist das Protokollausgabeziel. Zu den von Log4j bereitgestellten Appendern gehören:
Kopieren Sie den Codecode wie folgt:
org.apache.log4j.ConsoleAppender(Konsole),
org.apache.log4j.FileAppender(Datei),
org.apache.log4j.DailyRollingFileAppender (erzeugt jeden Tag eine Protokolldatei),
org.apache.log4j.RollingFileAppender (erzeugt eine neue Datei, wenn die Dateigröße die angegebene Größe erreicht),
org.apache.log4j.WriterAppender (sendet Protokollinformationen im Streaming-Format an einen beliebigen angegebenen Ort)
Layout: Protokollausgabeformat. Die von Log4j bereitgestellten Layouts sind 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)
Druckparameter: Log4J verwendet ein Druckformat, das der printf-Funktion in der C-Sprache ähnelt, um die Protokollinformationen wie folgt zu formatieren:
Kopieren Sie den Codecode wie folgt:
%m Gibt die im Code %p angegebene Meldung aus. Ausgabepriorität, also DEBUG, INFO, WARN, ERROR, FATAL
%r Geben Sie die Anzahl der Millisekunden aus, die vom Start der Anwendung bis zur Ausgabe der Protokollinformationen benötigt wurden. %c Geben Sie die Kategorie aus, zu der sie gehört, normalerweise den vollständigen Namen der Klasse. %t Geben Sie den Namen des Threads aus, der das Protokollereignis %n generiert hat Geben Sie ein Wagenrücklauf- und Zeilenvorschubzeichen aus. Die Windows-Plattform ist „/r/n“, die Unix-Plattform ist „/n“.
%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(TestLog4.java: 10)
2. Logger im Code initialisieren: 1) Rufen Sie die Methode BasicConfigurator.configure() im Programm auf: Fügen Sie einen ConsoleAppender zum Root-Recorder hinzu und legen Sie das Ausgabeformat über PatternLayout auf „%-4r [%t] %-5p %c %x - %m%n“ fest , und außerdem ist die Standardebene für gerootete Logger Level.DEBUG.
2) Die Konfiguration wird in der Datei abgelegt, der Dateiname wird über die Befehlszeilenparameter übergeben und über PropertyConfigurator.configure(args[x]); analysiert und konfiguriert.
3) Die Konfiguration wird in der Datei abgelegt, der Dateiname und andere Informationen werden über Umgebungsvariablen übergeben und der Standardinitialisierungsprozess von log4j wird zum Parsen und Konfigurieren verwendet.
4) Die Konfiguration wird in der Datei abgelegt, der Dateiname und andere Informationen werden durch die Anwendungsserverkonfiguration geleitet und ein spezielles Servlet wird verwendet, um die Konfiguration abzuschließen.
3. Legen Sie die Protokollausgabestufe für verschiedene Appender fest:
Beim Debuggen des Systems achten wir oft nur auf die Protokollausgabe der Ausnahmeebene, aber normalerweise werden alle Ausgabeebenen in einer Datei abgelegt. Wenn die Protokollausgabeebene BUG ist! ? Dann geh und finde es langsam.
Zum jetzigen Zeitpunkt denken wir vielleicht, dass es großartig wäre, wenn wir die Ausnahmeinformationen separat in eine Datei ausgeben könnten. Natürlich bietet Log4j bereits eine solche Funktion. Wir müssen lediglich den Schwellenwert des Appenders in der Konfiguration ändern, wie im folgenden Beispiel:
[Konfigurationsdatei]
Kopieren Sie den Codecode wie folgt:
### Protokollebenen festlegen ###
log4j.rootLogger = debug, stdout, D, E
###Ausgabe an Konsole###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### Ausgabe in Protokolldatei###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## Protokolle über DEBUG-Ebene ausgeben
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### Ausnahmeinformationen in einer separaten Datei speichern###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## Name der Ausnahmeprotokolldatei
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## Nur Protokolle über dem ERROR-Level ausgeben!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
[Im Code verwendet]
ö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" );
}
}
Führen Sie es aus und prüfen Sie, ob die Ausnahmeinformationen in einer separaten Datei error.log gespeichert sind