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