Inicializando Log4J con Spring?

Tengo una aplicación web que usa la clase Log4jConfigurer de Spring para inicializar mi fábrica de registros Log4J. Básicamente inicializa Log4J con un archivo de configuración que está fuera de la ruta de clases.

Aquí está la configuración:

      #{ MyAppHome + '/conf/log4j.xml'}    

Sin embargo, recibo este error al inicio de la aplicación:

log4j:WARN No appenders could be found for logger

y toneladas de mensajes de inicialización del contexto de la aplicación Spring se imprimen en la consola. Creo que esto se debe a que Spring está trabajando para inicializar mi aplicación antes de que tenga la oportunidad de inicializar mi registrador. En caso de que importe, estoy usando SLF4J encima de Log4J.

¿Hay alguna forma de que pueda obtener mi Log4jConfigurer para ser el primer bean inicializado? o hay alguna otra forma de resolver esto?

Puede configurar su oyente Log4j en web.xml en lugar de spring-context.xml

  log4jConfigLocation /WEB-INF/classes/log4j.web.properties   org.springframework.web.util.Log4jConfigListener  

Entonces todo termina antes de que comience la spring.

Nuestra aplicación independiente requiere un SMTPAppender donde la configuración del correo electrónico ya existe en un archivo de configuración de spring y no deseamos que se duplique en log4j.properties .

Puse lo siguiente junto para agregar un appender extra usando la spring.

      addAppender             %d, [%5p] [%t] [%c] - %m%n           

También tenemos un archivo log4j.properties en el classpath que detalla nuestros FileAppenders regulares.

Me doy cuenta de que esto puede ser excesivo para lo que necesita 🙂