当前位置: 首页 > 面试题库 >

用Spring初始化Log4J吗?

景修杰
2023-03-14
问题内容

我有一个使用Spring的Log4jConfigurer类初始化我的Log4J日志工厂的Web应用程序。基本上,它使用不在类路径中的配置文件来初始化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 No appenders could be found for logger

大量的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开始之前就结束了。



 类似资料:
  • 问题内容: 我正在尝试学习log4j,所以我只是尝试做一些非常简单的事情。 但是做完之后我得到了; 你知道我错了吗? 谢谢你们 问题答案: 您在类路径中缺少或。 您可以使用 但是请注意,这只会登录到System.out,因此不建议这样做。您实际上应该使用上面的文件之一,然后将其写入日志文件。 一个非常简单的例子是

  • 场景如下:我有一个现有的web应用程序,它通过servlet初始化log4j: 不,我想重写这个初始化通过一个外部文件传递log4j.configurationJVM ardument:-Dlog4j.configuration=file:/usr/本地/log4j.xml 当我启动应用程序服务器时,我可以看到外部文件首先被拾取,但随后通过初始化servlet的内部文件将覆盖这些更改。 我的问题是

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 我正在努力学习硒。 我收到以下错误消息: log4j:WARN找不到记录器(org.apache.http.client.protocol.RequestAddCookies)的追加器。log4j:警告请正确初始化log4j系统。log4j:请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig更多信息。 因此,我下载了文件,我在谷歌上搜索

  • 问题内容: 我有一个简单的log4j.property文件和一个使用log4j的简单程序。但是当我运行罐子时,我只会看到 这是我使用记录器的方法: 这是我的pom.xml的一部分 这是我的log4j.properties 现在从我的项目目录运行jar文件。这是我的项目目录 问题答案: 将log4j.properties文件放在src / main / resources中,以便将其捆绑到您的JAR

  • 我们的控制台应用程序正在使用logback进行日志记录。这是一个倒退。类路径中的xml文件。 在大多数平台(Linux、Windows、jdk7或jdk8)上,日志记录按预期工作(通过日志返回)。 然而,在使用jdk 6的Mac上,当运行应用程序时,我们有时会看到: 似乎出于某种原因,选择log4j而不是logback进行日志记录。在我们的生活中。班这里我们通过slf4j登录: 这是完整的类路径: