2013-02-02 16 views
7

Sto provando a passare da FileAppender a RollingFileAppender utilizzando log4j2 (accade sia con i contenitori beta3 che beta4).Errore durante il tentativo di creare log4j2 rollingfileappender

l'ho configurato come:

<RollingFile name="RollingFile" fileName="${logdir}/${filename}" 
    filePattern="${logdir}/app-%d{yyyy-MM-dd-hh-mm-ss}_%i.log" > 
    <PatternLayout> 
     <pattern>%d %p %C{1.} [%t] %m%n</pattern> 
    </PatternLayout> 
    <Policies> 
     <OnStartupTriggeringPolicy/> 
    </Policies> 
    <DefaultRolloverStrategy max="20"/> 
</RollingFile> 
     ... 
<loggers> 
      <root level="ERROR"> 
    <appender-ref ref="RollingFile"/> 
    <appender-ref ref="STDOUT"/> 
</root> 
     ... 

e nel codice, sto cercando di ottenere il logger in questo modo:

Logger logger = LogManager.getLogger(this.getClass()); 

ma sto ottenendo questa eccezione quando corro iT:

 
2013-02-01 17:56:54,773 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:723) 
    at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:489) 
    at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:481) 
    at org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure(BaseConfiguration.java:162) 
    at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:120) 
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:271) 
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:287) 
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:139) 
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:76) 
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:31) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:342) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:301) 
     ... 
Caused by: java.lang.ClassCastException: org.apache.logging.log4j.core.appender.FileManager cannot be cast to org.apache.logging.log4j.core.appender.rolling.RollingFileManager 
    at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:73) 
    at org.apache.logging.log4j.core.appender.RollingFileAppender.createAppender(RollingFileAppender.java:140) 
    ... 18 more 

sembra come se il file di configurazione viene letto ed l'appender sta cercando di ottenere creato ma non è sicuro di quello che sto facendo sbagliato

Ho provato a tagliare e incollare la configurazione di RollingFileAppender di altre persone senza alcuna modifica, ma ottengo comunque l'errore sopra riportato.

Grazie.

risposta

18

Nel mio caso il file di configurazione contiene File appender con RollingFile appender.

errore era in fileName parametro - è avere lo stesso valore in entrambe le appenders.

+1

Questo sembra corretto. Apparentemente (come in 2.3) non è possibile avere due "Appenders" diversi con lo stesso 'fileName' – MikeW

Problemi correlati