anular el nivel de subcategoría en la configuración de log4j
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>
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:
-
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)
-
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).