2013-02-02 26 views
7

Ich versuche, mit Log4j2 von FileAppender zu RollingFileAppender wechseln (passiert sowohl mit Beta3 und Beta4 Gläser).Fehler beim Versuch, log4j2 rollingfileappender zu erstellen

Ich habe es so konfiguriert wie:

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

und in dem Code, ich versuche den Logger auf diese Weise zu erhalten:

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

aber ich bin immer diese Ausnahme, wenn ich laufe es:

 
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 

es sieht aus, als ob die Konfigurationsdatei gelesen wird und die appender versucht erstellt zu bekommen, aber nicht sicher, was ich bin doin g falsch.

Ich habe versucht, die RollingFileAppender-Konfiguration anderer Leute zu schneiden und einzufügen, ohne irgendeine Modifikation, aber ich bekomme immer noch den obigen Fehler.

Danke.

Antwort

18

In meinem Fall Konfigurationsdatei enthalten File appender mit RollingFile appender.

Fehler war in fileName Parameter - es denselben Wert in beiden Appen haben.

+1

Das scheint richtig. Anscheinend (ab 2.3) können Sie nicht zwei verschiedene "Appender" mit demselben 'fileName' haben – MikeW

Verwandte Themen