我正在尝试使用Spring初始化log4J并使log4j不那么健谈。但我没有关闭伐木。
我把它放在我的spring.xml中:
<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>properties/log4j.properties</value>
</list>
</property>
</bean>
在我的log4J.properties中:
#log4j.rootLogger=DEBUG, stdout
log4j.logger.com.app=DEBUG, FileAppender
log4J.logger.org.springframework=INFO, stdout
# Skipped all appenders definition.
我有一个春季助手课程:
public class AppContext
{
private static ApplicationContext ctx;
public static void init()
{
ctx = new ClassPathXmlApplicationContext(
"file:properties/ApplicationContext.xml");
}
// Snipped the rest.
}
当我启动我的应用时,我明白了:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
我认为静态bean已经创建并调用了Log4jConfigurer,但没有。
我从我的eclipse运行,这个runConfig就是这样:
-Dlog4j.configuration=file:properties/log4j.properties
我错过了什么?
感谢您的投入,以下是新元素:
@Hellectronic你的意思是ClassPathXmlApplicationContext无法使用log4j吗?
@Ralph我的意思是:
<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>properties/log4j.properties</value>
</list>
</property>
好的,总结一下: 我必须取消注释lo4j.rootLogger才能使他配置。 在我的专用记录器之后删除std或FileAppender以避免双重日志条目。
答案 0 :(得分:1)
/**
* 初始化Spring环境, 并初始化采集任务
*/
private void setup() throws FileNotFoundException {
// Console程序必须使用Spring Log4jConfigurer 初始化Log4j
Log4jConfigurer.initLogging(Env.getLog4jConfig());
ApplicationContext context = new ClassPathXmlApplicationContext(DEFAULT_APPLICATION_CONTEXT);
SpringContextHolder contextHolder = new SpringContextHolder();
contextHolder.setApplicationContext(context);
}
答案 1 :(得分:0)
它没有拿起你的log4j配置;请求解决方案是将它放在类路径中,让log4j自己找到它。
还要确保您的运行配置使用的启动目录,您指定的路径配置才有意义,或提供绝对路径。