Logback GELF
Logback-Appender zum Senden von GELF-Nachrichten (Graylog Extended Log Format) ohne zusätzliche Abhängigkeiten.
Merkmale
- UDP (mit Chunking)
- TCP (mit oder ohne TLS-Verschlüsselung)
- HTTP(s)
- GZIP- und ZLIB-Komprimierung (im UDP- und HTTP-Modus)
- Clientseitiger Lastausgleich (Round-Robin)
- Weiterleitung von MDC (Mapped Diagnostic Context)
- Weiterleitung der Anruferdaten
- Weiterleitung statischer Felder
- Weiterleitung der Ausnahmeursache
- Keine Laufzeitabhängigkeiten außer Logback
Anforderungen
Beispiele
Einfache UDP-Konfiguration:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfUdpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
< root level = " debug " >
< appender-ref ref = " GELF " />
</ root >
</ configuration >
Einfache TCP-Konfiguration:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Einfaches TCP mit TLS-Konfiguration:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpTlsAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Einfache HTTP-Konfiguration:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfHttpAppender " >
< uri >https://my.server:12201/gelf</ uri >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
Weitere fortgeschrittene Beispiele finden Sie im Beispielverzeichnis.
Konfiguration
Appender
de.siegmar.logbackgelf.GelfUdpAppender
- greylogHost : IP oder Hostname des Graylog-Servers. Wenn der Hostname in mehrere IP-Adressen aufgelöst wird, wird Round-Robin verwendet.
- greylogPort : Port des Graylog-Servers. Standard: 12201.
- maxChunkSize : Maximale Größe von GELF-Blöcken in Bytes. Die Standardblockgröße beträgt 508 – dies verhindert die Fragmentierung von IP-Paketen. Dies ist auch das empfohlene Minimum. Die maximal unterstützte Blockgröße beträgt 65.467 Byte.
- compressMethod : Zu verwendende Komprimierungsmethode (NONE, GZIP oder ZLIB). Standard: GZIP.
- messageIdSupplier : Der Mechanismus, der eindeutige Nachrichten-IDs bereitstellt, die für das GELF UDP-Protokoll erforderlich sind. Standard:
de.siegmar.logbackgelf.MessageIdSupplier
. - Encoder : Siehe Encoder-Konfiguration unten.
de.siegmar.logbackgelf.GelfTcpAppender
- greylogHost : IP oder Hostname des Graylog-Servers. Wenn der Hostname in mehrere IP-Adressen aufgelöst wird, wird Round-Robin verwendet.
- greylogPort : Port des Graylog-Servers. Standard: 12201.
- connectTimeout : Maximale Zeit (in Millisekunden), die auf den Verbindungsaufbau gewartet werden soll. Ein Wert von 0 deaktiviert das Verbindungs-Timeout. Standard: 15.000 Millisekunden.
- socketTimeout : Maximale Blockzeit (in Millisekunden) beim Lesen eines Sockets. Ein Wert von 0 deaktiviert das Socket-Timeout. Standard: 5.000 Millisekunden.
- reconnectInterval : Zeitintervall (in Sekunden), nachdem eine bestehende Verbindung geschlossen und wieder geöffnet wurde. Ein Wert von -1 deaktiviert automatische Wiederverbindungen. Standard: 60 Sekunden.
- maxRetries : Anzahl der Wiederholungsversuche. Ein Wert von 0 deaktiviert Wiederholungsversuche. Standard: 2.
- retryDelay : Zeit (in Millisekunden) zwischen Wiederholungsversuchen. Wird ignoriert, wenn maxRetries 0 ist. Standard: 3.000 Millisekunden.
- poolSize : Anzahl gleichzeitiger TCP-Verbindungen (mindestens 1). Standard: 2.
- poolMaxWaitTime : Maximale Zeit (in Millisekunden), die darauf gewartet wird, dass eine Verbindung aus dem Pool verfügbar wird. Ein Wert von -1 deaktiviert das Timeout. Standard: 5.000 Millisekunden.
- poolMaxIdleTime : Maximale Zeit (in Sekunden), die eine gepoolte Verbindung im Leerlauf sein kann, bevor sie als „veraltet“ gilt und nicht wiederverwendet wird. Ein Wert von -1 deaktiviert die Funktion für die maximale Leerlaufzeit. Standard: -1 (deaktiviert).
- Encoder : Siehe Encoder-Konfiguration unten.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Alles von GelfTcpAppender
- unsicher : Wenn wahr, überspringen Sie die TLS-Zertifikatsvalidierung. Sie sollten dies nicht in der Produktion verwenden! Standard: false.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : HTTP(s)-URI des Graylog-Servers (z. B. https://my.server:12201/gelf).
- unsicher : Wenn wahr, überspringen Sie die TLS-Zertifikatsvalidierung. Sie sollten dies nicht in der Produktion verwenden! Standard: false.
- connectTimeout : Maximale Zeit (in Millisekunden), die auf den Verbindungsaufbau gewartet werden soll. Ein Wert von 0 deaktiviert das Verbindungs-Timeout. Standard: 15.000 Millisekunden.
- requestTimeout : Maximale Zeit (in Millisekunden), die auf eine Antwort gewartet werden soll. Ein Wert von 0 deaktiviert das Timeout. Standard: 5.000 Millisekunden.
- maxRetries : Anzahl der Wiederholungsversuche. Ein Wert von 0 deaktiviert Wiederholungsversuche. Standard: 2.
- retryDelay : Zeit (in Millisekunden) zwischen Wiederholungsversuchen. Wird ignoriert, wenn maxRetries 0 ist. Standard: 3.000 Millisekunden.
- compressMethod : Zu verwendende Komprimierungsmethode (NONE, GZIP oder ZLIB). Standard: GZIP.
- Encoder : Siehe Encoder-Konfiguration unten.
Encoder
de.siegmar.logbackgelf.GelfEncoder
- originHost : Ursprungs-Hostname – wird automatisch erkannt, wenn nicht angegeben.
- includeRawMessage : Wenn true, wird auch die Rohnachricht (mit Argumentplatzhaltern) gesendet. Standard: false.
- includeKeyValues : Wenn true, werden auch Schlüsselwertpaare gesendet. Standard: wahr.
- includeMarker : Wenn true, werden auch Logback-Marker gesendet. Standard: false.
- includeMdcData : Wenn true, werden auch MDC-Schlüssel/Werte gesendet. Standard: wahr.
- includeCallerData : Wenn true, werden auch Aufruferdaten (Quelldatei-, Methoden-, Klassenname und Zeile) gesendet. Standard: false.
- includeRootCauseData : Wenn „true“, wird die Grundausnahme der mit der Protokollnachricht übergebenen Ausnahme in den Feldern „root_cause_class_name“ und „root_cause_message“ angezeigt. Standard: false.
- includeLevelName : Wenn true, wird auch der Log-Level-Name (z. B. DEBUG) gesendet. Standard: false.
- levelNameKey : Der Schlüssel (dh der Feldname), der für den Protokollebenennamen verwendet werden soll. Dies ist nur relevant, wenn includeLevelName wahr ist. Standard: Ebenenname.
- loggerNameKey : Der Schlüssel (dh der Feldname), der für den Loggernamen verwendet werden soll. Standard: Loggername.
- threadNameKey : Der Schlüssel (dh der Feldname), der für den Thread-Namen verwendet werden soll. Standard: Threadname.
- appendNewline : Wenn true, wird am Ende jeder Nachricht ein systemabhängiges Zeilenumbruchtrennzeichen hinzugefügt. Verwenden Sie dies nicht in Verbindung mit dem TCP/UDP/HTTP-Appender, da dies nur für die Konsolenprotokollierung sinnvoll ist!
- shortMessageLayout : Kurznachrichtenformat. Standard:
"%m%nopex"
. - fullMessageLayout : Vollständiges Nachrichtenformat (Stacktrace). Standard:
"%m%n"
. - zahlenAsString : Zahlen als String protokollieren. Standard: false.
- staticFields : Zusätzliche statische Felder zum Senden an Graylog. Standardwerte: keine.
Fehlerbehebung
Wenn Sie Probleme haben, aktivieren Sie den Debug-Modus und überprüfen Sie die Protokolle.
< configuration debug = " true " >
...
</ configuration >