无法使用log4j.xml控制Struts2日志级别

时间:2011-12-03 09:29:13

标签: struts2 log4j

我正在使用在Tomcat 6上运行的Struts2 webapp(Struts 2.2.3.1)。 正如几个教程中所见,我在log4j.xml中有以下位,它位于webapp的WEB-INF / classes目录中:

<logger name="com.opensymphony">
    <level value="DEBUG" />
</logger>

<logger name="org.apache.struts2">
    <level value="DEBUG" />
</logger>

在我的Tomcat配置中设置属性log4j.debug=true之后,我在Tomcat日志中找到(如预期)以下输出:

log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
log4j: debug attribute= "null".
log4j: Ignoring debug attribute.
log4j: Threshold ="null".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [com.opensymphony] additivity to [true].
log4j: Level value for com.opensymphony is  [DEBUG].
log4j: com.opensymphony level set to DEBUG
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [org.apache.struts2] additivity to [true].
log4j: Level value for org.apache.struts2 is  [DEBUG].
log4j: org.apache.struts2 level set to DEBUG
log4j: Level value for root is  [DEBUG].
log4j: root level set to DEBUG

但是,在任何日志文件中都找不到任何Struts调试消息。 我的log4j版本是1.2.14。

如何正确控制Struts的日志记录?

1 个答案:

答案 0 :(得分:0)

如果我是正确的,你必须定义某种Appender才能将日志输出重定向到日志文件。

在默认情况下,struts2日志将显示在控制台上。在log4j文件中定义类似这样的内容

<appender name="FA" class="org.apache.log4j.FileAppender">
<param name="File" value="sample.log"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
</layout>
</appender>

你必须告诉log4j重定向注销的位置