0

Logger.getRootLogger().getAppender("CONSOLE")在类中返回 null 但它可以登录到控制台。getAllAppenders() 也在此类中返回 NullEnumeration。

在另一个类(MyClass) 日志级别:DEBUG | 可加性:真 | 家长:根 | getAllAppenders():NullEnumeration 但 log.debug 不向控制台打印任何内容。此类的 log4j 配置是

<logger name="com.xxx.service.impl.MyClass">
    <level value="TRACE"/>
</logger>

试图调试为什么调试消息没有以多种方式打印但徒劳无功。

如何深入检查此类的 log4j 配置以及可能出现的问题,请帮助我。

4

2 回答 2

1

首先,您应该将 additivity 参数设置为 false 以确保每个类都将其日志写入一个 log4j 文件:

log4j.additivity.${APPENDARNAME}=false

并确保您的应用只加载了一项 log4j 技术(我更喜欢只为基本人员使用 log4j)

请确保,您的任何类路径文件夹下都没有 log4j.xml 或 log4j.properties 文件,但您要加载的文件夹。如果这是可能的,请强制应用程序使用您的应用程序。对于春天:

<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" >
    <property name="staticMethod">
        <value>org.springframework.util.Log4jConfigurer.initLogging</value>
    </property>
    <property name="arguments">
        <list>
            <value>file:${log4jFile}</value>
        </list>
    </property>
</bean>
于 2013-08-19T08:03:21.723 回答
0

在 web.xml 中添加以下侦听器解决了我的问题。它配置了我想要的 log4j.xml 并且 log4j 记录正常。

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.xml</param-value>
    </context-param>

    <!-- applies log4j configuration -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
于 2013-08-21T09:37:03.773 回答