Iniciar sesión GELF
Apéndice de inicio de sesión para enviar mensajes GELF (formato de registro extendido Graylog) sin dependencias adicionales.
Características
- UDP (con fragmentación)
- TCP (con o sin cifrado TLS)
- HTTP(es)
- Compresión GZIP y ZLIB (en modo UDP y HTTP)
- Equilibrio de carga del lado del cliente (round-robin)
- Reenvío de MDC (contexto de diagnóstico mapeado)
- Reenvío de datos de la persona que llama
- Reenvío de campos estáticos
- Reenvío de la causa raíz de la excepción
- No hay dependencias de tiempo de ejecución además de Logback
Requisitos
- Java 11
- Iniciar sesión 1.5.7
Ejemplos
Configuración UDP sencilla:
< 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 >
Configuración TCP sencilla:
< 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 >
TCP simple con configuración 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 >
Configuración HTTP sencilla:
< 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 >
Encuentre ejemplos más avanzados en el directorio de ejemplos.
Configuración
apéndice
de.siegmar.logbackgelf.GelfUdpAppender
- GraylogHost : IP o nombre de host del servidor Graylog. Si el nombre de host se resuelve en varias direcciones IP, se utilizará la operación por turnos.
- GraylogPort : Puerto del servidor Graylog. Predeterminado: 12201.
- maxChunkSize : tamaño máximo de fragmentos GELF en bytes. El tamaño de fragmento predeterminado es 508; esto evita la fragmentación de paquetes IP. Este también es el mínimo recomendado. El tamaño máximo de fragmento admitido es 65.467 bytes.
- compresiónMethod : método de compresión a utilizar (NONE, GZIP o ZLIB). Valor predeterminado: GZIP.
- messageIdSupplier : el mecanismo que proporciona identificadores de mensajes únicos que requiere el protocolo GELF UDP. Valor predeterminado:
de.siegmar.logbackgelf.MessageIdSupplier
. - codificador : consulte la configuración del codificador a continuación.
de.siegmar.logbackgelf.GelfTcpAppender
- GraylogHost : IP o nombre de host del servidor Graylog. Si el nombre de host se resuelve en varias direcciones IP, se utilizará la operación por turnos.
- GraylogPort : Puerto del servidor Graylog. Predeterminado: 12201.
- connectTimeout : tiempo máximo (en milisegundos) de espera para establecer una conexión. Un valor de 0 desactiva el tiempo de espera de conexión. Valor predeterminado: 15.000 milisegundos.
- socketTimeout : tiempo máximo (en milisegundos) para bloquear al leer un socket. Un valor de 0 desactiva el tiempo de espera del socket. Valor predeterminado: 5000 milisegundos.
- reconnectInterval : Intervalo de tiempo (en segundos) después de que se cierra y se vuelve a abrir una conexión existente. Un valor de -1 deshabilita las reconexiones automáticas. Predeterminado: 60 segundos.
- maxRetries : Número de reintentos. Un valor de 0 deshabilita los reintentos. Predeterminado: 2.
- retryDelay : tiempo (en milisegundos) entre reintentos. Se ignora si maxRetries es 0. Valor predeterminado: 3000 milisegundos.
- poolSize : Número de conexiones TCP simultáneas (mínimo 1). Predeterminado: 2.
- poolMaxWaitTime : cantidad máxima de tiempo (en milisegundos) para esperar a que una conexión esté disponible desde el grupo. Un valor de -1 desactiva el tiempo de espera. Valor predeterminado: 5000 milisegundos.
- poolMaxIdleTime : cantidad máxima de tiempo (en segundos) que una conexión agrupada puede estar inactiva antes de que se considere "obsoleta" y no se reutilice. Un valor de -1 desactiva la función de tiempo máximo de inactividad. Valor predeterminado: -1 (deshabilitado).
- codificador : consulte la configuración del codificador a continuación.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Todo, desde GelfTcpAppender
- inseguro : si es verdadero, omita la validación del certificado TLS. ¡No deberías usar esto en producción! Valor predeterminado: falso.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : URI HTTP(s) del servidor Graylog (por ejemplo, https://my.server:12201/gelf).
- inseguro : si es verdadero, omita la validación del certificado TLS. ¡No deberías usar esto en producción! Valor predeterminado: falso.
- connectTimeout : tiempo máximo (en milisegundos) de espera para establecer una conexión. Un valor de 0 desactiva el tiempo de espera de conexión. Valor predeterminado: 15.000 milisegundos.
- requestTimeout : tiempo máximo (en milisegundos) para esperar una respuesta. Un valor de 0 desactiva el tiempo de espera. Valor predeterminado: 5000 milisegundos.
- maxRetries : Número de reintentos. Un valor de 0 deshabilita los reintentos. Predeterminado: 2.
- retryDelay : tiempo (en milisegundos) entre reintentos. Se ignora si maxRetries es 0. Valor predeterminado: 3000 milisegundos.
- compresiónMethod : método de compresión a utilizar (NONE, GZIP o ZLIB). Valor predeterminado: GZIP.
- codificador : consulte la configuración del codificador a continuación.
Codificador
de.siegmar.logbackgelf.GelfEncoder
- originHost : nombre de host de origen; se detectará automáticamente si no se especifica.
- includeRawMessage : si es verdadero, también se enviará el mensaje sin formato (con marcadores de posición de argumentos). Valor predeterminado: falso.
- includeKeyValues : si es verdadero, también se enviarán los pares clave-valor. Valor predeterminado: verdadero.
- includeMarker : si es verdadero, también se enviarán marcadores de inicio de sesión. Valor predeterminado: falso.
- includeMdcData : si es verdadero, también se enviarán las claves/valores de MDC. Valor predeterminado: verdadero.
- includeCallerData : si es verdadero, también se enviarán los datos de la persona que llama (archivo fuente, método, nombre de clase y línea). Valor predeterminado: falso.
- includeRootCauseData : si es verdadero, la excepción de causa raíz de la excepción pasada con el mensaje de registro se expondrá en los campos root_cause_class_name y root_cause_message. Valor predeterminado: falso.
- includeLevelName : si es verdadero, también se enviará el nombre del nivel de registro (por ejemplo, DEBUG). Valor predeterminado: falso.
- levelNameKey : la clave (es decir, el nombre del campo) que se debe utilizar para el nombre del nivel de registro. Esto sólo es relevante cuando includeLevelName es verdadero. Valor predeterminado: nombre_nivel.
- loggerNameKey : la clave (es decir, el nombre del campo) que se debe utilizar para el nombre del registrador. Valor predeterminado: nombre_registrador.
- threadNameKey : la clave (es decir, el nombre del campo) que debe usarse para el nombre del hilo. Valor predeterminado: nombre_hilo.
- appendNewline : si es verdadero, se agregará un separador de nueva línea dependiente del sistema al final de cada mensaje. ¡No use esto junto con el agregado TCP/UDP/HTTP, ya que esto solo es razonable para el registro de la consola!
- shortMessageLayout : formato de mensaje corto. Predeterminado:
"%m%nopex"
. - fullMessageLayout : formato de mensaje completo (Stacktrace). Predeterminado:
"%m%n"
. - numberAsString : registra números como cadena. Valor predeterminado: falso.
- staticFields : campos estáticos adicionales para enviar a Graylog. Valores predeterminados: ninguno.
Solución de problemas
Si tiene algún problema, habilite el modo de depuración y verifique los registros.
< configuration debug = " true " >
...
</ configuration >