Spring 3和log4J的控制台应用程序

时间:2011-10-26 10:17:28

标签: eclipse spring log4j

我正在尝试使用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以避免双重日志条目。

2 个答案:

答案 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自己找到它。

还要确保您的运行配置使用的启动目录,您指定的路径配置才有意义,或提供绝对路径。