java - 用 Spring 初始化 Log4J?

标签 java spring web-applications log4j

我有一个 Web 应用程序,它使用 Spring 的 Log4jConfigurer 类来初始化我的 Log4J 日志工厂。基本上,它使用不在类路径中的配置文件初始化 Log4J。

这里是配置:

<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="sbeHome">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
    <property name="arguments">
        <list>
            <value>#{ MyAppHome + '/conf/log4j.xml'}</value>
        </list>
    </property>
</bean>

但是我在应用程序启动时收到此错误:

log4j:WARN 找不到记录器的附加程序

大量 Spring 应用程序上下文初始化消息被打印到控制台。我认为这是因为 Spring 在有机会初始化我的记录器之前正在初始化我的应用程序。万一这很重要,我在 Log4J 之上使用 SLF4J。

有什么方法可以让我的 Log4jConfigurer 成为第一个初始化的 bean?还是有其他方法可以解决这个问题?

最佳答案

您可以在 web.xml 而不是 spring-context.xml 中配置 Log4j 监听器

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.web.properties</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

所以它在 Spring 开始之前就起来了。

关于java - 用 Spring 初始化 Log4J?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400583/

相关文章:

java - 延迟数据导致 OnCreate 上出现 NullPointerException

Java 菜单循环问题;程序循环太快?

带有 JPA 的 Spring Data 不会在错误时回滚事务

java - Controller @RequestMapping URL 返回 404 未找到

iphone - 如何将 iPhone 应用程序变成 Web 应用程序

apache - 为什么我的 UrlRewriteFilter 不能在 Tomcat 上运行?

java - 收到信号时正常关闭应用程序

java - 使用私有(private)变量覆盖类中的方法

java - JPA,保存关系而不查询实体

c# - 为什么 System.Net.Mail 在我的 c#.net web 应用程序的一部分工作,但在另一部分却不行?