当服务器启动时,我在控制台中看到了所有正确的log4j配置。但是,我没有看到来自spring框架的任何日志消息。
另外,我添加了一些输出定义记录器的代码,我看到我的spring记录器已定义。为什么我没有看到来自spring的任何日志消息?
Enumeration loggers = Logger.getDefaultHierarchy().getCurrentLoggers();
while( loggers.hasMoreElements()){
Logger logger = (Logger) loggers.nextElement();
System.out.println(logger.getName()+","+logger.getLevel());
}
SystemOut O org.springframework,DEBUG
我的web.xml是(log4j / spring部分):
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/resource/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
我的log4j.xml是:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%5p %d %C{1} - %m%n" />
</layout>
</appender>
<!-- Loggers to filter out various class paths -->
<logger name="org.springframework" additivity="false">
<level value="debug"/>
<appender-ref ref="ConsoleAppender" />
</logger>
</log4j:configuration>
这是我在控制台中看到的内容:
SystemOut O log4j: System property is :null
SystemOut O log4j: Standard DocumentBuilderFactory search succeded.
SystemOut O log4j: DocumentBuilderFactory is: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
SystemOut O log4j: debug attribute= "true".
SystemOut O log4j: Threshold ="null".
SystemOut O log4j: Retreiving an instance of org.apache.log4j.Logger.
SystemOut O log4j: Setting [org.springframework] additivity to [false].
SystemOut O log4j: Level value for org.springframework is [debug].
SystemOut O log4j: org.springframework level set to DEBUG
SystemOut O log4j: Class name: [org.apache.log4j.ConsoleAppender]
SystemOut O log4j: Setting property [target] to [System.Out].
SystemOut O log4j: Setting property [threshold] to [DEBUG].
SystemOut O log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
SystemOut O log4j: Setting property [conversionPattern] to [%5p %d %C{1} - %m%n].
SystemOut O log4j: Adding appender named [ConsoleAppender] to category [org.springframework].
SystemOut O log4j: Level value for root is [debug].
SystemOut O log4j: root level set to DEBUG
SystemOut O log4j: Adding appender named [ConsoleAppender] to category [root].
我尝试过的事情:
1)来自this post
的接受答案2)我删除了很多我认为可能会干扰log4j的罐子。
3)将spring log4j监听器添加到web.xml(也在appcontext.xml中尝试了log4jInitialization bean)
答案 0 :(得分:0)
尝试将“目标”属性添加到您的控制台appender中,如下所示:
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%5p %d %C{1} - %m%n" />
</layout>
</appender>
P.S。我的log4j.xml示例(我在JBoss 7上使用它)文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="debug"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
</layout>
</appender>
<logger name="org.springframework" additivity="false">
<level value="debug"/>
<appender-ref ref="consoleAppender"/>
</logger>
<root>
<level value="WARN"/>
<appender-ref ref="consoleAppender"/>
</root>
</log4j:configuration>
答案 1 :(得分:0)
您需要指定root logger。
<root>
<priority value="info"/>
<appender-ref ref="ConsoleAppender"/>
</root>
另外,正如@Ernestas所说,ConsoleAppender需要Target
属性。
答案 2 :(得分:0)
原来缺少的是jcl-over-slf4j.jar。一旦我开始工作,我就开始退出所做的所有其他更改,看看哪些更改是不必要的。最终,这就是我必须做的事情:
web.xml或appcontext.xml中的log4j特定配置证明是不必要的 - 至少在我的情况下。
我发现我的lib文件夹中的jar文件有自己的log4j.properties文件也没有干扰 - log4j interference - level keeps being set to "OFF"顺便说一下,以下帖子非常有助于识别这些文件 - List contents of multiple jar files
答案 3 :(得分:0)
我也有同样的问题,我通过添加commons-logging的依赖来解决这个问题,如果这也适用于你,请尝试。下面是我在pom.xml中添加的依赖项。
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.3</version>
</dependency>