通过DI在Spring Framework中正确使用LOG4J

我试图使用Log4j作为Spring Framework的一部分,据我所知,通过使用适当的bean,系统应该映射代码中可访问的单例实例,同时将日志记录深度自动映射到类

类似于Log4J的正常使用

Logger log = Logger.getLogger(getClass());

我一直在使用以下Spring bean定义

      conf\log4j.xml    

但我无法将此bean映射到给定类中的特定成员,也无法通过@autowired使用它

如果有更好的方法来集成Log4j和Spring,请告诉我

最好的祝福

标记

对你的问题的简短回答是log4j不是DI友好的。

Log4jConfigurer.initLogging()方法具有void返回值,因此无需注入任何内容。 我们的想法是你调用那个引导log4j的方法,然后像往常一样使用Log4j API(使用Logger.getLogger(getClass()) )。

但是,您通常不会将Log4jConfigurer配置为Spring bean,但通常在应用程序启动期间直接从您自己的代码调用它。

如果这是一个webapp,那么Spring提供了更适合该环境的Log4jWebConfigurer替代方案( Log4jWebConfigurerLog4jConfigListener )。

顺便提一下,2年前我提交了一个function请求 ,允许记录器自动assembly,最后它被标记为Spring 3.1的修复程序。 Horray。