我试图将Log4j用作Spring Framework的一部分, 据我所知,通过使用适当的bean 系统应该映射代码中可访问的单例实例 同时将记录深度自动映射到类
与
中正常使用Log4J类似 Logger log = Logger.getLogger(getClass());
我一直在使用以下Spring bean定义
<bean id="log4jInitialization"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass"
value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>conf\log4j.xml</value>
</list>
</property>
</bean>
但我无法将此bean映射到给定类中的特定成员 我也无法通过@autowired
使用它如果有更好的方法来集成Log4j和Spring
,请告诉我最好的问候
标记
答案 0 :(得分:6)
你的问题的简短回答是log4j不是DI友好的。
Log4jConfigurer.initLogging()
方法有一个void返回值,因此无需注入。我的想法是你调用那个引导log4j的方法,然后像往常一样使用Log4j API(使用Logger.getLogger(getClass())
)。
但是,您通常不会将Log4jConfigurer
配置为Spring bean,但通常在应用程序启动期间直接从您自己的代码调用它。
如果这是一个webapp,那么Spring提供了更适合该环境的Log4jConfigurer
的替代方案(Log4jWebConfigurer
,Log4jConfigListener
)。
顺便提一下,2年前我提交了一个feature request来允许记录器自动装配,它最终被标记为Spring 3.1的修复程序。 Horray。