我正在尝试使用 Log4j 作为 Spring 框架的一部分,
据我了解,通过使用适当的豆子
系统应该映射一个可在代码中访问的单例实例
同时将日志记录深度自动映射到类
类似于 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
此致
Mark
对你的问题的简短回答是 log4j 不适合 DI 。
The Log4jConfigurer.initLogging()
方法有一个 void 返回值,所以没有什么可注入的。这个想法是,您调用该方法来引导 log4j,然后像往常一样使用 Log4j API(使用Logger.getLogger(getClass())
).
一般情况下你不会配置Log4jConfigurer
虽然作为 Spring bean,但更常见的是,您可以在应用程序启动期间直接从自己的代码调用它。
如果这是一个 web 应用程序,那么 Spring 提供了替代方案Log4jConfigurer
更适合该环境(Log4jWebConfigurer
, Log4jConfigListener
).
顺便说一句,2年前我提交了一份功能要求 https://jira.springsource.org/browse/SPR-4431允许记录器自动连接,它最终被标记为 Spring 3.1 的修复。霍雷。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)