Declarando varios appenders en el archivo log4j2.properties
En el mismo archivo log4j2.properties, quiero declarar varios appenders, digamos ‘XXX’ y ‘YYY’.
El problema es que con esta configuración:
#GENERIC
rootLogger.level = DEBUG
rootLogger.appenderRefs = XXX, YYY
appenders = XXX, YYY
loggers = XXX, YYY
#XXX
rootLogger.appenderRef.XXX.ref = XXX
logger.XXX.name = XXX
logger.XXX.level = DEBUG
property.XXX.filename = C:/logs/XXX.log
appender.XXX.type = RollingFile
appender.XXX.name = XXX
appender.XXX.fileName = ${XXX.filename}
appender.XXX.filePattern = ${XXX.filename}.%d{yyyy-MM-dd}
appender.XXX.layout.type = PatternLayout
appender.XXX.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
appender.XXX.policies.type = Policies
appender.XXX.policies.time.type = TimeBasedTriggeringPolicy
appender.XXX.policies.time.interval = 1
#YYY
rootLogger.appenderRef.YYY.ref = YYY
logger.YYY.name = YYY
logger.YYY.level = DEBUG
property.YYY.filename = C:/logs/YYY.log
appender.YYY.type = RollingFile
appender.YYY.name = YYY
appender.YYY.fileName = ${YYY.filename}
appender.YYY.filePattern = ${YYY.filename}.%d{yyyy-MM-dd}
appender.YYY.layout.type = PatternLayout
appender.YYY.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
appender.YYY.policies.type = Policies
appender.YYY.policies.time.type = TimeBasedTriggeringPolicy
appender.YYY.policies.time.interval = 1
Utilizando esto, el mensaje de registro se rastrea en el archivo XXX.log y también en el archivo YYY.log.
Logger log = Logger.getLogger("XXX");
log.info("Alguna información en el registro");
¿Alguien sabe qué estoy haciendo mal?
¿Cuál es la configuración mínima requerida considerando que necesito declarar muchos appenders en el mismo archivo properties?
davy.ai
Para asegurarse de que los mensajes de registro se tracen correctamente en los apéndices específicos, es necesario especificar la referencia del apéndice en el método getLogger. Por ejemplo:
En la configuración inicial mostrada anteriormente, ambos apéndices son referenciados por el rootLogger. Por lo tanto, independientemente de la referencia del apéndice proporcionada en el método getLogger, el mensaje de registro será trazado en ambos apéndices.
Para evitar esto, puedes eliminar las referencias a los apéndices en el rootLogger y solo declararlos en los registradores específicos donde sean necesarios. Por ejemplo:
Con esta configuración, solo se utilizarán los apéndices referenciados en cada registrador cuando se traze un mensaje de registro. Además, se pueden declarar tantos apéndices como sea necesario en el mismo archivo de propiedades, simplemente siguiendo la misma sintaxis mostrada para los apéndices XXX y YYY.