Reconnexion GELF
Appender de journalisation pour l'envoi de messages GELF (Graylog Extended Log Format) sans dépendances supplémentaires.
Caractéristiques
- UDP (avec découpage)
- TCP (avec ou sans cryptage TLS)
- HTTP(s)
- Compression GZIP et ZLIB (en mode UDP et HTTP)
- Équilibrage de charge côté client (round robin)
- Transfert de MDC (contexte de diagnostic mappé)
- Transmission des données de l'appelant
- Transmission de champs statiques
- Transmission de la cause première de l'exception
- Aucune dépendance d'exécution à part Logback
Exigences
Exemples
Configuration UDP simple :
< 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 >
Configuration TCP simple :
< 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 >
Configuration TCP simple avec TLS :
< 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 >
Configuration HTTP simple :
< 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 >
Trouvez des exemples plus avancés dans le répertoire des exemples.
Configuration
Appendice
de.siegmar.logbackgelf.GelfUdpAppender
- graylogHost : IP ou nom d'hôte du serveur graylog. Si le nom d'hôte est résolu en plusieurs adresses IP, le round-robin sera utilisé.
- graylogPort : Port du serveur graylog. Par défaut : 12201.
- maxChunkSize : Taille maximale des morceaux GELF en octets. La taille de bloc par défaut est de 508 - cela empêche la fragmentation des paquets IP. C'est également le minimum recommandé. La taille maximale de bloc prise en charge est de 65 467 octets.
- compressionMethod : Méthode de compression à utiliser (NONE, GZIP ou ZLIB). Par défaut : GZIP.
- messageIdSupplier : mécanisme qui fournit les identifiants de message uniques requis par le protocole GELF UDP. Valeur par défaut :
de.siegmar.logbackgelf.MessageIdSupplier
. - encodeur : Voir Configuration de l'encodeur ci-dessous.
de.siegmar.logbackgelf.GelfTcpAppender
- graylogHost : IP ou nom d'hôte du serveur graylog. Si le nom d'hôte est résolu en plusieurs adresses IP, le round-robin sera utilisé.
- graylogPort : Port du serveur graylog. Par défaut : 12201.
- connectTimeout : Temps maximum (en millisecondes) d'attente pour l'établissement d'une connexion. Une valeur de 0 désactive le délai d'expiration de la connexion. Par défaut : 15 000 millisecondes.
- socketTimeout : Temps maximum (en millisecondes) de blocage lors de la lecture d'un socket. Une valeur de 0 désactive le délai d'expiration du socket. Par défaut : 5 000 millisecondes.
- reconnectInterval : intervalle de temps (en secondes) après la fermeture et la réouverture d'une connexion existante. Une valeur de -1 désactive les reconnexions automatiques. Par défaut : 60 secondes.
- maxRetries : Nombre de tentatives. Une valeur de 0 désactive les nouvelles tentatives. Par défaut : 2.
- retryDelay : délai (en millisecondes) entre les tentatives de nouvelle tentative. Ignoré si maxRetries est 0. Par défaut : 3 000 millisecondes.
- poolSize : Nombre de connexions TCP simultanées (minimum 1). Par défaut : 2.
- poolMaxWaitTime : durée maximale (en millisecondes) d'attente pour qu'une connexion soit disponible à partir du pool. Une valeur de -1 désactive le délai d'attente. Par défaut : 5 000 millisecondes.
- poolMaxIdleTime : durée maximale (en secondes) pendant laquelle une connexion groupée peut être inactive avant d'être considérée comme « périmée » et de ne pas être réutilisée. Une valeur de -1 désactive la fonctionnalité de temps d'inactivité maximal. Par défaut : -1 (désactivé).
- encodeur : Voir Configuration de l'encodeur ci-dessous.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Tout de GelfTcpAppender
- non sécurisé : si vrai, ignorez la validation du certificat TLS. Vous ne devriez pas l’utiliser en production ! Par défaut : faux.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : HTTP(s) URI du serveur graylog (par exemple https://my.server:12201/gelf).
- non sécurisé : si vrai, ignorez la validation du certificat TLS. Vous ne devriez pas l’utiliser en production ! Par défaut : faux.
- connectTimeout : Temps maximum (en millisecondes) d'attente pour l'établissement d'une connexion. Une valeur de 0 désactive le délai d'expiration de la connexion. Par défaut : 15 000 millisecondes.
- requestTimeout : Temps maximum (en millisecondes) d'attente d'une réponse. Une valeur de 0 désactive le délai d'attente. Par défaut : 5 000 millisecondes.
- maxRetries : Nombre de tentatives. Une valeur de 0 désactive les nouvelles tentatives. Par défaut : 2.
- retryDelay : délai (en millisecondes) entre les tentatives de nouvelle tentative. Ignoré si maxRetries est 0. Par défaut : 3 000 millisecondes.
- compressionMethod : Méthode de compression à utiliser (NONE, GZIP ou ZLIB). Par défaut : GZIP.
- encodeur : Voir Configuration de l'encodeur ci-dessous.
Encodeur
de.siegmar.logbackgelf.GelfEncoder
- originHost : Nom d'hôte d'origine - sera détecté automatiquement s'il n'est pas spécifié.
- includeRawMessage : Si vrai, le message brut (avec des espaces réservés pour les arguments) sera également envoyé. Par défaut : faux.
- includeKeyValues : Si vrai, les paires clé-valeur seront également envoyées. Par défaut : vrai.
- includeMarker : Si vrai, les marqueurs de connexion seront également envoyés. Par défaut : faux.
- includeMdcData : Si vrai, les clés/valeurs MDC seront également envoyées. Par défaut : vrai.
- includeCallerData : Si vrai, les données de l'appelant (fichier source, méthode, nom de classe et ligne) seront également envoyées. Par défaut : faux.
- includeRootCauseData : si vrai, l'exception de cause première de l'exception transmise avec le message de journal sera exposée dans les champs root_cause_class_name et root_cause_message. Par défaut : faux.
- includeLevelName : Si vrai, le nom du niveau de journalisation (par exemple DEBUG) sera également envoyé. Par défaut : faux.
- levelNameKey : La clé (c'est-à-dire le nom du champ) qui doit être utilisée pour le nom du niveau de journalisation. Ceci n’est pertinent que lorsque includeLevelName est vrai. Par défaut : nom_niveau.
- loggerNameKey : La clé (c'est-à-dire le nom du champ) qui doit être utilisée pour le nom de l'enregistreur. Par défaut : nom_enregistreur.
- threadNameKey : La clé (c'est-à-dire le nom du champ) qui doit être utilisée pour le nom du thread. Par défaut : nom_thread.
- appendNewline : Si vrai, un séparateur de nouvelle ligne dépendant du système sera ajouté à la fin de chaque message. Ne l'utilisez pas en conjonction avec l'appender TCP/UDP/HTTP, car cela n'est raisonnable que pour la journalisation de la console !
- shortMessageLayout : Format de message court. Par défaut :
"%m%nopex"
. - fullMessageLayout : Format de message complet (Stacktrace). Par défaut :
"%m%n"
. - numberAsString : enregistre les numéros sous forme de chaîne. Par défaut : faux.
- staticFields : champs statiques supplémentaires à envoyer à graylog. Valeurs par défaut : aucune.
Dépannage
Si vous rencontrez des problèmes, activez le mode débogage et vérifiez les journaux.
< configuration debug = " true " >
...
</ configuration >