Pregunta

Hay algunas auditorías en mi aplicación. Cada evento de auditoría tiene su propia categoría log4j con un nombre prefijado por la misma cadena.

EG: nombre de categoría de auditoría general: com.company.audit

nombre de categoría de inicio de sesión web: com.company.audit.web.login
crear algo: com.company.audit.api.create etc.

algunas de las categorías deben registrarse de manera predeterminada, pero otras no = >

<category name="com.compamy.audit" additivity="true">
    <priority value="INFO"/>
</category>

<category name="com.company.audit.web.login" additivity="true">
  <priority value="DEBUG">
</category>

Por defecto es INFO, la segunda categoría no debe registrarse. Al menos lo pensé pero no funciona. Cualquier ayuda sobre cómo anular el nivel de registro en 'subcategoría'.

NOTA: no tengo muchas posibilidades de cambiar un esquema de nombres en su conjunto

AGREGADO:

aquí está la configuración del appender:

<appender class="org.apache.log4j.RollingFileAppender" name="Company_AUDIT">

<param name="File" value="${jboss.server.log.dir}/company_audit.log"/>

<param value="10000KB" name="MaxFileSize"/>

<param value="10" name="MaxBackupIndex"/>

<layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="foo"/>
</layout>

</appender>
¿Fue útil?

Solución

Su configuración significa: para la categoría com.company.audit, registre todos los mensajes de nivel INFO o superior. Para com.company.audit.web.login, registre todos los mensajes de nivel DEBUG o superior. Entonces, todos los mensajes de la segunda categoría se registran, que es lo que solicitó.

Lo que realmente desea es seleccionar si se muestra la segunda categoría o no. Puedo pensar en dos enfoques para hacer eso:

  1. en su código, use la convención de que todos los mensajes en OFF se registrarán en el nivel <=>, y todos los mensajes en <=> se registrarán en el nivel <=>. En su configuración, solo necesita establecer el nivel de la categoría principal:

    • <=>: muestra todos los mensajes
    • <=>: no muestra " opcional " mensajes (es decir, los de la subcategoría)
  2. En la configuración, coloque <=> en el nivel <=> cuando desee deshabilitar sus mensajes. Cuando desee activarlo, simplemente comente la línea (heredará la configuración de la categoría principal).

Prefiero la segunda opción, porque puedes seguir usando el nivel para la gravedad del mensaje (para lo que está destinado originalmente).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top