Log4J - Funcionalidade semelhante ao SiftingAppender

Eu trabalho em um projeto que usaLog4J. Um dos requisitos é criar um arquivo de log separado para cada thread; isso em si era um problema estranho, de certa forma, criando um novo FileAppender na hora e anexando-o à instância do Logger.

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);

Tudo correu bem até que percebemos que outra biblioteca que usamos -Spring Framework v3.0.0 (que usaRegisto de Commons) - não joga bola com a técnica acima - os dados de registro do Spring são “vistos” apenas por Anexadores inicializados a partir do arquivo log4.configuration, mas não pelos Anexadores criados em tempo de execução. Então, de volta à estaca zero.

Depois de alguma investigação, descobri que o novo e melhoradoLogback tem um appender -SiftingAppender - que faz exatamente o que precisamos, ou seja, o registro de nível de thread em arquivos independentes.

No momento, migrar para o LogBack não é uma opção, então, estando preso ao Log4J, como posso alcançar a funcionalidade semelhante ao SiftingAppender e manter o Spring feliz também?

Nota: Primavera é usada apenas paraJdbcTemplate funcionalidade, não IOC; a fim de "enganchar" o Spring's Commons Logging no Log4J. Eu adicionei esta linha no arquivo log4j.properties:

log4j.logger.org.springframework = DEBUG

conforme instruídoAqui.

questionAnswers(5)

yourAnswerToTheQuestion