Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j调试未记录到任何已配置的附加器_Java_Logging_Log4j - Fatal编程技术网

Java log4j调试未记录到任何已配置的附加器

Java log4j调试未记录到任何已配置的附加器,java,logging,log4j,Java,Logging,Log4j,Logger.getRootLogger().getAppender(“控制台”)在类中返回null,但它可以登录到控制台。getAllAppenders()在此类中还返回NullEnumeration 在另一个类(MyClass)的日志记录级别中:DEBUG | Additivity:true | Parent:root | getAllAppenders():NullEnumeration 但是log.debug不向控制台打印任何内容。 此类的log4j配置为 <logger name

Logger.getRootLogger().getAppender(“控制台”)
在类中返回null,但它可以登录到控制台。getAllAppenders()在此类中还返回NullEnumeration

在另一个类(MyClass)的日志记录级别中:DEBUG | Additivity:true | Parent:root | getAllAppenders():NullEnumeration 但是log.debug不向控制台打印任何内容。 此类的log4j配置为

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

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


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

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

log4j.可加性${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>

org.springframework.util.log4jconfig.initLogging
文件:${log4jFile}

在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>

log4jConfigLocation
类路径:log4j.xml
org.springframework.web.util.Log4jConfigListener

有一个参数“-Dlog4j.debug=true”。添加并运行它。它会显示是否有任何log4j属性文件startup@Neron谢谢你的评论。我也尝试过这个选项。根据log4j调试日志记录器正在获取我想要的配置文件(log4j.xml),所有appender都已正确初始化(文件appender带有正确的日志文件),有些类可以将日志打印到所有appender,有些类则无法,如上所述的MyClass。我也为MyClass记录器添加了特定的appender ref。仍然没有更改。