Trabajo en un proyecto que usa Log4J. Uno de los requisitos es crear un archivo de registro separado para cada hilo; esto en sí mismo era un problema extraño, algo ordenado al crear un nuevo FileAppender sobre la marcha y adjuntarlo a la instancia de Logger.Log4J - Funcionalidad similar a SiftingAppender
Logger logger = Logger.getLogger(<thread dependent string>);
FileAppender appender = new FileAppender();
appender.setFile(fileName);
appender.setLayout(new PatternLayout(lp.getPattern()));
appender.setName(<thread dependent string>);
appender.setThreshold(Level.DEBUG);
appender.activateOptions();
logger.addAppender(appender);
Todo fue bien hasta que nos dimos cuenta de que otra biblioteca que utilizamos - Spring Framework v3.0.0 (que usar Commons Logging) - no jugar a la pelota con la técnica anterior - el registro de datos de Primavera es “vista” solamente por appenders inicializado desde el archivo log4.configuration pero no por los Appenders creados en tiempo de ejecución. Entonces, volviendo al punto uno.
Después de algunas investigaciones, descubrí que la nueva y mejorada LogBack tiene un appender - SiftingAppender - que hace exactamente lo que necesitamos, es decir, el registro de nivel de subprocesos en archivos independientes.
Por el momento, pasar a LogBack no es una opción, entonces, al estar atascado con Log4J, ¿cómo puedo lograr la funcionalidad de SiftingAppender y también mantener a Spring feliz?
Nota: Spring solo se utiliza para la funcionalidad JdbcTemplate, no IOC; con el fin de “gancho” Comunes de la primavera de registro que puede Log4J he añadido esta línea en el archivo log4j.properties:
log4j.logger.org.springframework = DEBUG
según las instrucciones here.
Si solo está utilizando Spring para la funcionalidad de jdbc, entonces quizás quiera considerar usar algo como apache commons-dbutils. –