log4j: Неизвестный элемент RollingPolicy

У меня есть приложение, работающее на 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 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 не может быть правильно проанализирован)

Поэтому любые идеи, почему это происходит, будут высоко оценены.

Заранее спасибо!


person timofey    schedule 08.06.2013    source источник


Ответы (2)


Взято с страницы документации Appenders:

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

Я думаю, вам следует заменить rollingPolicy на policy. Это, вероятно, зависит от того, используете ли вы 2.0 или 1.2; Я не вижу policy в версии 1.2.

person Eric Jablow    schedule 08.06.2013

Я думаю, что вы установили неправильный класс или свой собственный класс для класса rollingPolicy для двух ваших приложений, которые, возможно, не существуют или не распознаются log4j.

 <rollingPolicy class="com.myapp.logging.AgingTimeBasedRollingFilePolicy">

Итак, измените оба класса приложений:

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">

которые были предоставлены apache-log4j-extras jar

person Amar Abdillah    schedule 14.01.2015