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 TimeFilter
permite 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 , DENY ou NEUTRAL . Padrão NEUTRAL . |
5 | onMismatch | Como registrar se a condição do filtro for falsa . Talvez ACCEPT , DENY ou 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 RegexFilter
permite 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 , DENY ou NEUTRAL . Padrão NEUTRAL . |
4 | onMismatch | Como registrar se a condição do filtro for falsa . Talvez ACCEPT , DENY ou 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 , DENY ou NEUTRAL . Padrão NEUTRAL . |
3 | onMismatch | Como registrar se a condição do filtro for falsa . Talvez ACCEPT , DENY ou 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>
GO TO FULL VERSION