Liste der Appender
Mit dem Logger können Sie Daten gleichzeitig in mehreren Dateien speichern. Solche Ausgabedatenströme werden Appender (von append) genannt. Es gibt eine ganze Reihe von Standard-Appendern, daher werden wir nur die beliebtesten behandeln:
Anhänge | Beschreibung | |
---|---|---|
1 | Konsole | Druckt Daten auf der Konsole |
2 | Datei | Gibt Daten in eine Datei aus |
3 | DailyRollingFile | Gibt Daten in eine Datei aus, die Datei wird zyklisch überschrieben |
4 | asynchron | Ermöglicht das asynchrone Schreiben von Daten in einen anderen Appender |
5 | Steckdose | Schreibt Daten in einen bestimmten Socket |
6 | JDBC | Schreibt Nachrichten mithilfe des JDBC-Protokolls in die Datenbank |
7 | JPA | Schreibt Nachrichten mithilfe des JPA-Protokolls in die Datenbank |
8 | http | Sendet Ereignisse über das HTTP-Protokoll an einen Remote-Server |
9 | SMTP | Speichert Nachrichten in einem Puffer und versendet sie dann als E-Mail |
Eine gute Dokumentation für alle Appender finden Sie auf der offiziellen Website
Und im Folgenden betrachten wir die beliebtesten und einfachsten davon.
ConsoleAppender
Der einfachste Appender istConsoleApender
. Wie Sie vielleicht schon erraten haben, schreibt er seine Nachrichten einfach an die Konsole. Es hat mehrere für uns interessante Parameter:
Attribute | ||
---|---|---|
1 | Name | Appender-Name |
2 | Filter | Ermöglicht das Filtern einiger Nachrichten |
3 | Layout | Gibt die Formatierung von Nachrichten bei der Ausgabe an |
4 | Ziel | Gibt an, wo geschrieben werden soll: SYTEM_OUT oderSYSTEM_ERR |
Die Konfiguration ist ganz einfach:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
FileAppender
Der nützlichste Appender istFileAppender
. Im Gegensatz dazu ConsoleAppender
schreibt er seine Nachrichten in eine Datei. Dies ist sehr nützlich, wenn Ihre Anwendung irgendwo auf dem Server ausgeführt wird. Es hat viele Parameter, weil Es muss in der Lage sein, Dateien auf verschiedenen Betriebssystemen zu schreiben.
Aber wir werden nur die beliebtesten davon betrachten.
1 | Name | Gibt den Namen des Appenders an |
2 | Filter | Ermöglicht das Filtern einiger Nachrichten |
3 | Layout | Gibt die Formatierung von Nachrichten bei der Ausgabe an |
4 | Dateinamen | Gibt den Namen der Datei an, in die Nachrichten geschrieben werden sollen |
5 | anhängen | Wenn true , werden die Meldungen zum alten Protokoll hinzugefügt, wenn false - wird die Protokolldatei bei jedem Start der Anwendung neu erstellt. |
6 | Puffergröße | Legt die Puffergröße in Bytes fest |
7 | sofortSpülung | Wenn true , dann wird jede Nachricht tatsächlich sofort (ohne Puffer) auf die Festplatte geschrieben. Das Protokoll beginnt langsam zu arbeiten, aber das erspart Ihnen den Verlust von Daten, wenn das Programm abstürzt. |
Da Sie bereits wissen, wie man gut mit Dateien arbeitet, sind diese Einstellungen für Sie nichts Neues. Die Konfiguration eines solchen Loggers ist noch einfacher als die eines Konsolen-Loggers:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
Der beliebteste Appender istRollingFileAppender
. Im Gegensatz FileAppender
dazu können Sie das Protokoll in viele kleine Dateien aufteilen. Dies ist bei großen Protokollen sehr wichtig. Darüber hinaus können Sie Regeln festlegen, was mit alten Dateien geschehen soll, nachdem mit dem Schreiben neuer Dateien begonnen wurde.
Und dieser Appender hat fast hundert verschiedene Einstellungen. Mehr dazu erfahren Sie unter dem Link .
Betrachten Sie die beliebtesten Attribute dieses Appenders:
Attribute | ||
---|---|---|
1 | Name | Gibt den Namen des Appenders an |
2 | Filter | Ermöglicht das Filtern einiger Nachrichten |
3 | Layout | Gibt die Formatierung von Nachrichten bei der Ausgabe an |
4 | Dateinamen | Gibt den Namen der Datei an, in die Nachrichten geschrieben werden sollen |
5 | Dateimuster | Gibt ein Benennungsmuster für Archivdateien an, die nicht mehr geschrieben werden |
6 | Politik | Gibt die Bedingung an, wann mit dem Überschreiben der Datei begonnen werden soll |
7 | Strategie | Beschreibt, was mit alten Dateien zu tun ist: Archiv, Verlauf für wie viele Tage aufzubewahren usw. |
Hier ist ein gutes Beispiel:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
Der Parameter filePattern
gibt eine Vorlage für Archive alter Protokolle an. Es gibt auch zwei Möglichkeiten, bei Auslösung wird eine neue Datei geschrieben:
TimeBasedTriggeringPolicy
– funktioniert, wenn ein neuer Tag beginnt (das aktuelle Datum ändert sich)SizeBasedTriggeringPolicy
– funktioniert, wenn die Dateigröße 250 MB erreicht