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>
GO TO FULL VERSION