log4j debug不记录到任何已配置的appender

时间:2013-08-16 12:25:50

标签: java logging log4j

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

在另一个类(MyClass)中记录级别:DEBUG |可加性:真实父:root | getAllAppenders():NullEnumeration  但是log.debug没有打印到控制台。  这个类的log4j配置是

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

尝试调试为什么调试消息不会以多种方式打印,但是徒劳无功。

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

2 个答案:

答案 0 :(得分:1)

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

log4j.additivity。$ {APPENDARNAME} =假

并确保您的应用只加载了一个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>

答案 1 :(得分: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>