Logback GELF
Anexador de logback para enviar mensagens GELF (Graylog Extended Log Format) com zero dependências adicionais.
Características
- UDP (com fragmentação)
- TCP (com ou sem criptografia TLS)
- HTTP(s)
- Compressão GZIP e ZLIB (em modo UDP e HTTP)
- Balanceamento de carga do lado do cliente (round-robin)
- Encaminhamento de MDC (Contexto de Diagnóstico Mapeado)
- Encaminhamento de dados do chamador
- Encaminhamento de campos estáticos
- Encaminhamento da causa raiz da exceção
- Nenhuma dependência de tempo de execução além do Logback
Requisitos
Exemplos
Configuração UDP simples:
< 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 >
Configuração TCP simples:
< 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 >
Configuração TCP simples com 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 >
Configuração HTTP simples:
< 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 >
Encontre exemplos mais avançados no diretório de exemplos.
Configuração
Anexador
de.siegmar.logbackgelf.GelfUdpAppender
- graylogHost : IP ou nome do host do servidor graylog. Se o nome do host for resolvido para vários endereços IP, o round-robin será usado.
- graylogPort : Porta do servidor graylog. Padrão: 12201.
- maxChunkSize : Tamanho máximo dos pedaços GELF em bytes. O tamanho padrão do bloco é 508 – isso evita a fragmentação do pacote IP. Este também é o mínimo recomendado. O tamanho máximo do bloco suportado é 65.467 bytes.
- compressionMethod : método de compactação a ser usado (NONE, GZIP ou ZLIB). Padrão: GZIP.
- messageIdSupplier : o mecanismo que fornece IDs de mensagens exclusivos exigidos pelo protocolo GELF UDP. Padrão:
de.siegmar.logbackgelf.MessageIdSupplier
. - codificador : Consulte a configuração do codificador abaixo.
de.siegmar.logbackgelf.GelfTcpAppender
- graylogHost : IP ou nome do host do servidor graylog. Se o nome do host for resolvido para vários endereços IP, o round-robin será usado.
- graylogPort : Porta do servidor graylog. Padrão: 12201.
- connectTimeout : Tempo máximo (em milissegundos) de espera para estabelecer uma conexão. Um valor 0 desativa o tempo limite de conexão. Padrão: 15.000 milissegundos.
- socketTimeout : Tempo máximo (em milissegundos) para bloquear ao ler um soquete. Um valor 0 desativa o tempo limite do soquete. Padrão: 5.000 milissegundos.
- reconnectInterval : intervalo de tempo (em segundos) após uma conexão existente ser fechada e reaberta. Um valor -1 desativa reconexões automáticas. Padrão: 60 segundos.
- maxRetries : Número de tentativas. Um valor 0 desativa novas tentativas. Padrão: 2.
- retryDelay : Tempo (em milissegundos) entre novas tentativas. Ignorado se maxRetries for 0. Padrão: 3.000 milissegundos.
- poolSize : Número de conexões TCP simultâneas (mínimo 1). Padrão: 2.
- poolMaxWaitTime : quantidade máxima de tempo (em milissegundos) de espera para que uma conexão seja disponibilizada no pool. Um valor -1 desativa o tempo limite. Padrão: 5.000 milissegundos.
- poolMaxIdleTime : Quantidade máxima de tempo (em segundos) que uma conexão em pool pode ficar inativa antes de ser considerada 'obsoleta' e não ser reutilizada. Um valor -1 desativa o recurso de tempo máximo de inatividade. Padrão: -1 (desabilitado).
- codificador : Consulte a configuração do codificador abaixo.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Tudo do GelfTcpAppender
- insecure : se verdadeiro, ignore a validação do certificado TLS. Você não deve usar isso na produção! Padrão: falso.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : URI HTTP(s) do servidor graylog (por exemplo, https://my.server:12201/gelf).
- insecure : se verdadeiro, ignore a validação do certificado TLS. Você não deve usar isso na produção! Padrão: falso.
- connectTimeout : Tempo máximo (em milissegundos) de espera para estabelecer uma conexão. Um valor 0 desativa o tempo limite de conexão. Padrão: 15.000 milissegundos.
- requestTimeout : Tempo máximo (em milissegundos) para aguardar uma resposta. Um valor 0 desativa o tempo limite. Padrão: 5.000 milissegundos.
- maxRetries : Número de tentativas. Um valor 0 desativa novas tentativas. Padrão: 2.
- retryDelay : Tempo (em milissegundos) entre novas tentativas. Ignorado se maxRetries for 0. Padrão: 3.000 milissegundos.
- compressionMethod : método de compactação a ser usado (NONE, GZIP ou ZLIB). Padrão: GZIP.
- codificador : Consulte a configuração do codificador abaixo.
Codificador
de.siegmar.logbackgelf.GelfEncoder
- originHost : Nome do host de origem - será detectado automaticamente se não for especificado.
- includeRawMessage : Se verdadeiro, a mensagem bruta (com espaços reservados para argumentos) também será enviada. Padrão: falso.
- includeKeyValues : se verdadeiro, os pares de valores-chave também serão enviados. Padrão: verdadeiro.
- includeMarker : Se verdadeiro, os marcadores de logback também serão enviados. Padrão: falso.
- includeMdcData : Se verdadeiro, as chaves/valores MDC também serão enviadas. Padrão: verdadeiro.
- includeCallerData : Se verdadeiro, os dados do chamador (arquivo de origem, método, nome da classe e linha) também serão enviados. Padrão: falso.
- includeRootCauseData : Se verdadeiro, a exceção de causa raiz da exceção passada com a mensagem de log será exposta nos campos root_cause_class_name e root_cause_message. Padrão: falso.
- includeLevelName : Se verdadeiro, o nome do nível de log (por exemplo, DEBUG) também será enviado. Padrão: falso.
- levelNameKey : A chave (ou seja, o nome do campo) que deve ser usada para o nome do nível de log. Isso só é relevante quando includeLevelName for verdadeiro. Padrão: nome_nível.
- loggerNameKey : A chave (ou seja, o nome do campo) que deve ser usada para o nome do criador de logs. Padrão: nome_do_logger.
- threadNameKey : A chave (ou seja, o nome do campo) que deve ser usada para o nome do thread. Padrão: thread_name.
- appendNewline : se verdadeiro, um separador de nova linha dependente do sistema será adicionado ao final de cada mensagem. Não use isso em conjunto com o anexador TCP/UDP/HTTP, pois isso é razoável apenas para registro do console!
- shortMessageLayout : formato de mensagem curta. Padrão:
"%m%nopex"
. - fullMessageLayout : formato completo da mensagem (Stacktrace). Padrão:
"%m%n"
. - numbersAsString : Registra números como String. Padrão: falso.
- staticFields : campos estáticos adicionais para enviar ao graylog. Padrões: nenhum.
Solução de problemas
Se você tiver algum problema, habilite o modo de depuração e verifique os logs.
< configuration debug = " true " >
...
</ configuration >