我正在研究java web应用程序。它应该使用log4j。根据标准的maven目录布局,我将log4j.xml放到了
src\main\resources\log4j.xml
然后我按照建议的here:
将以下行添加到我的web.xml中<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
当我运行应用程序时(来自IntelliJ IDEA,mvn jetty:run),出现以下控制台消息
2015-02-20 12:11:59.727:INFO:/:Initializing log4j from [classpath:log4j.xml]
找到并加载了证明log4j.xml。
但是 log4j.xml中的所有规则都无法正常工作。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="ALL" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" />
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL" />
<param name="File" value="d:\\MyApp.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" />
</layout>
</appender>
<root>
<priority value="DEBUG"/>
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</root>
</log4j:configuration>
文件 d:\ MyApp.log未创建(执行了log.info调用)。我还尝试了d://MyApp.log,。/ MyApp.log,MyApp.log - 但 log4j并不能在任何地方创建MyApp.log 。非常困惑。错误在哪里?
P.S。
是的,应用程序具有此位置的写权限。
典型用法:
公共类LogExample { private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class); }