CodeGym/Cursos Java/Módulo 3/Filtros de log no Log4j

Filtros de log no Log4j

Disponível

5.1 Lista de filtros

O logger permite que você configure a filtragem de mensagens de maneira muito fria. Para fazer isso, ele tem algumas dezenas de filtros com todos os tipos de parâmetros. A tabela abaixo mostra os mais populares.

Filtros Descrição
1 BurstFilter Permite controlar a frequência de mensagens por segundo para um determinado nível de registro.
2 Filtro Composto Permite definir vários filtros sequenciais.
3 DynamicThresholdFilter Permite ativar o log detalhado se determinadas informações forem encontradas no log.
4 MapFilter Permite construir uma expressão lógica complexa para o filtro a partir de vários parâmetros.
5 MarcadorFiltro Permite filtrar mensagens por tags, a tag deve ser adicionada primeiro durante o registro do evento.
6 RegexFilter Permite definir uma máscara - uma expressão regular.
7 Filtro de Dados Estruturados Permite filtrar as mensagens pela presença de determinados dados nelas.
8 ThreadContextMapFilter Permite gerenciar filtros com base nos dados retirados do contexto do thread atual.
9 ThresholdFilter Controla a criação de log com base no nível da mensagem de log.
10 TimeFilter Permite ativar e desativar filtros em horários específicos.

A seguir, falaremos sobre apenas três deles. Você pode aprender mais sobre esses filtros em seu site oficial .

5.2 Filtro de Tempo

O filtro TimeFilterpermite ligar e desligar os filtros em um determinado momento, possui 5 parâmetros:

1 começar Hora de início do registro no formatoHH:mm:ss
2 fim Hora de logoff no formatoHH:mm:ss
3 fuso horário Define o fuso horário.
4 onMatch Como registrar se a condição do filtro for verdadeira . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.
5 onMismatch Como registrar se a condição do filtro for falsa . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.

Vamos configurar um filtro que ativará o log às 5h e desligará às 5h30 todos os dias. Um exemplo com uma configuração de filtro completa está abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
    <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
    </PatternLayout>
    <TimeBasedTriggeringPolicy />
    </RollingFile>
</Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>
</Configuration>

5.3 RegexFilter

O filtro RegexFilterpermite definir uma máscara (expressão regular) para filtrar as mensagens. Este filtro tem 4 parâmetros:

1 regex Especifica uma expressão regular - uma máscara usada para filtrar mensagens.HH:mm:ss
2 useRawMsg A máscara é aplicada na mensagem antes da formatação (true) ou após a formatação (false)
3 onMatch Como registrar se a condição do filtro for verdadeira . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.
4 onMismatch Como registrar se a condição do filtro for falsa . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.

Vamos configurar um filtro que permita apenas mensagens que contenham a palavra codegym. Um exemplo com uma configuração de filtro completa está abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
    <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
    </PatternLayout>
    <TimeBasedTriggeringPolicy />
    </RollingFile>
  </Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>
</Configuration>

5.4 Filtro Limiar

O filtro ThresholdFilter permite configurar a filtragem por nível de mensagem. Possui apenas 3 parâmetros:

1 nível Define o nome do nível de log de mensagens: ERROR, DEBUG, …
2 onMatch Como registrar se a condição do filtro for verdadeira . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.
3 onMismatch Como registrar se a condição do filtro for falsa . Talvez ACCEPT, DENYou NEUTRAL. Padrão NEUTRAL.

Vamos configurar um filtro que só permitirá mensagens de nível DEBUG. Um exemplo com uma configuração de filtro completa está abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
       <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
    </PatternLayout>
    <TimeBasedTriggeringPolicy />
    </RollingFile>
</Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
</Loggers>
</Configuration>
Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário