log4j:无法识别的元素滚动策略

标签 log4j tomcat7

我有一个在 Tomcat 7.0.2 上运行的应用程序,并使用 log4j 进行日志记录。 tomcat 启动后不久,catalina.out 中会出现以下消息:

INFO: Initializing log4j from [file:///export0/home/tomcat/appconf/log4j.xml]
log4j:WARN Unrecognized element rollingPolicy
log4j:WARN Please set a rolling policy for the RollingFileAppender named 'PERFFILE'
log4j:WARN Unrecognized element rollingPolicy
log4j:WARN Please set a rolling policy for the RollingFileAppender named 'FILE'

当我的实际日志消息应该打印时,我看到以下内容:

log4j:ERROR No output stream or file set for the appender named [FILE].
log4j:ERROR No output stream or file set for the appender named [PERFFILE].

这两个appender的定义如下:

 <appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender">
      <param name="Append" value="true" />
      <param name="File" value="${catalina.base}/logs/server.log" />
      <rollingPolicy class="com.myapp.logging.AgingTimeBasedRollingFilePolicy">
           <param name="fileNamePattern" value="${catalina.base}/logs/archive/server.%d{yyyy-MM-dd}.log.gz" />
           <param name="keepFilesForDays" value="30" />
      </rollingPolicy> 
      <layout class="com.myapp.logging.jboss.WebappAwarePattern">
           <param name="ConversionPattern" value="%d{ISO8601}{${server.localTimezone}} %p [%X{webapp}:%c{2}] %m%n" />
      </layout>
 </appender>

 <appender name="PERFFILE" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Append" value="true" />
    <param name="File" value="${catalina.base}/logs/performance.log" />
    <rollingPolicy class="com.myapp.logging.AgingTimeBasedRollingFilePolicy">
        <param name="fileNamePattern" value="${catalina.base}/logs/archive/performance.%d{yyyy-MM-dd}.log.gz" />
        <param name="keepFilesForDays" value="30" />
    </rollingPolicy>
    <layout class="com.myapp.logging.jboss.WebappAwarePattern">
        <param name="ConversionPattern" value="%d{ISO8601}{${server.localTimezone}} %p [%X{webapp}:%c{2}] %throwable{0} %m%n" />
    </layout>
</appender>

我一直在努力弄清楚为什么会出现这个错误,但没有得到结果(可能是我的 log4j.xml 无法正确解析)

因此,任何关于为什么会发生这种情况的想法都将受到高度赞赏。

提前致谢!

最佳答案

取自 the Appenders documentation page :

Parameter Name    Type               Description
policy            TriggeringPolicy   The policy to use to determine
                                     if a rollover should occur.

我认为您应该将 rollingPolicy 替换为 policy。这可能取决于您使用的是 2.0 还是 1.2;我在 1.2 版本中没有看到 policy

关于log4j:无法识别的元素滚动策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16999159/

相关文章:

tomcat7 - 如何解决Tomcat jmxproxy返回 "Attribute cannot be null"?

tomcat - 当 Tomcat 通过 IntelliJ Idea Ultimate 12 运行时,我无法访问 Tomcat 7 管理器

java - .War 可以在 Windows 上部署但无法在 Linux 服务器 (Tomcat 7) 上部署

Tomcat:log4j 不旋转日志文件

java - 如何禁用标记记录器上的可加性?

java - maven 和 gwt 的 Log4j 问题 : org. apache.log4j.XAppender 对象不可分配

java - 通过 log4j 将 printStackTrace() 发送到文件而不捕获异常

java - VertX 和 Log4j 无法获取配置

tomcat - tomcat 7 的 settings.xml 在哪里?

java - 将 slf4j 与 log4j 结合使用。在 tomcat 中部署时未在文件中创建日志