5.1 Lista de filtros

El registrador le permite configurar muy bien el filtrado de mensajes. Para ello, dispone de un par de decenas de filtros con todo tipo de parámetros. La siguiente tabla muestra los más populares.

filtros Descripción
1 Filtro de ráfaga Le permite controlar la frecuencia de mensajes por segundo para un nivel de registro determinado.
2 Filtro compuesto Le permite establecer múltiples filtros secuenciales.
3 Filtro de umbral dinámico Le permite habilitar el registro detallado si se encuentra cierta información en el registro.
4 filtro de mapa Le permite construir una expresión lógica compleja para el filtro a partir de varios parámetros.
5 MarcadorFiltro Le permite filtrar mensajes por etiquetas, primero se debe agregar la etiqueta durante el registro de eventos.
6 RegexFilter Le permite establecer una máscara, una expresión regular.
7 Filtro de datos estructurados Le permite filtrar los mensajes por la presencia de ciertos datos en ellos.
8 SubprocesoContextoMapaFiltro Le permite administrar filtros basados ​​en datos tomados del contexto del hilo actual.
9 Filtro de umbral Controla el registro en función del nivel del mensaje de registro.
10 Filtro de tiempo Le permite activar y desactivar los filtros en momentos específicos.

A continuación hablaremos de solo tres de ellos. Puedes conocer más sobre estos filtros en su web oficial .

5.2 Filtro de tiempo

El filtro TimeFilterte permite activar y desactivar filtros en un momento determinado, tiene 5 parámetros:

1 comenzar Hora de inicio de registro en el formatoHH:mm:ss
2 fin Hora de cierre de sesión en el formatoHH:mm:ss
3 zona horaria Establece la zona horaria.
4 enPartido Cómo registrar si la condición del filtro es verdadera . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_
5 onMismatch Cómo iniciar sesión si la condición del filtro es falsa . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_

Configuremos un filtro que active el registro a las 5 a. m. y lo apague a las 5:30 a. m. todos los días. A continuación se muestra un ejemplo con una configuración de filtro completa:


    <?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 Filtro Regex

El filtro RegexFilterle permite establecer una máscara (expresión regular) para filtrar mensajes. Este filtro tiene 4 parámetros:

1 expresiones regulares Especifica una expresión regular, una máscara que se usa para filtrar mensajes.HH:mm:ss
2 usarRawMsg La máscara se aplica en el mensaje antes de formatear (verdadero) o después de formatear (falso)
3 enPartido Cómo registrar si la condición del filtro es verdadera . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_
4 onMismatch Cómo iniciar sesión si la condición del filtro es falsa . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_

Configuremos un filtro que solo permita mensajes que contengan la palabra codegym. A continuación se muestra un ejemplo con una configuración de filtro completa:


    <?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 de umbral

El filtro ThresholdFilter le permite configurar el filtrado por nivel de mensaje. Tiene solo 3 parámetros:

1 nivel Establece el nombre del nivel de registro de mensajes: ERROR, DEBUG, ...
2 enPartido Cómo registrar si la condición del filtro es verdadera . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_
3 onMismatch Cómo iniciar sesión si la condición del filtro es falsa . Tal vez ACCEPT, DENYo NEUTRAL. predeterminado NEUTRAL_

Configuremos un filtro que solo permita mensajes de nivel DEBUG. A continuación se muestra un ejemplo con una configuración de filtro completa:


    <?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>