2013-02-02 55 views
7

FileAppender'ı kullanarak log4j2'yi kullanarak RollingFileAppender'ı kullanmaya çalışıyorum (hem beta3 hem de beta4 kavanozlarıyla olur).hata oluşturmaya çalışırken hata oluştu log4j2 rollingfileappender

Ben olarak yapılandırılmış olması:

<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> 
     ... 

ve kod

, ben logger bu şekilde almaya çalışıyorum:

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

ama çalıştırdığınızda bu özel durum alıyorum o:

 
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 

yapılandırma dosyası okunurken sanki görünüyor ve appender oluşturulan almaya çalışırken ama yaptığımı olduğum şey olmadığına emin g yanlış.

Başkalarının RollingFileAppender yapılandırmasını herhangi bir değişiklik olmadan kesmeyi ve yapıştırmayı denedim, ancak yine de yukarıdaki hatayı alıyorum.

Teşekkürler.

cevap

18

Durumumda RollingFile appender numaralı File appender yapılandırma dosyasında bulunur.

hata fileName parametrede - bu iki appenders aynı değere sahiptir.

+1

Bu doğru gibi görünüyor. Görünüşe göre (2.3'den itibaren) aynı "dosyaAdı" ile iki farklı "Ekleyiciye" sahip olamazsınız. – MikeW

İlgili konular