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配置以及可能出现的问题,请帮帮我。
答案 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>