7

log4j2 を使用して FileAppender から RollingFileAppender に切り替えようとしています (beta3 と beta4 jar の両方で発生します)。

私はそれを次のように構成しました:

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

コードでは、この方法でロガーを取得しようとしています:

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

しかし、実行すると次の例外が発生します。

2013-02-01 17:56:54,773 エラー 要素 RollingFile java.lang.reflect.InvocationTargetException のクラス org.apache.logging.log4j.core.appender.RollingFileAppender でメソッド createAppender を呼び出すことができません
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
    sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で
    sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で
    java.lang.reflect.Method.invoke (不明なソース) で
    org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject (BaseConfiguration.java:723) で
    org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration (BaseConfiguration.java:489) で
    org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration (BaseConfiguration.java:481) で
    org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure (BaseConfiguration.java:162) で
    org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:120) で
    org.apache.logging.log4j.core.LoggerContext.setConfiguration (LoggerContext.java:271) で
    org.apache.logging.log4j.core.LoggerContext.reconfigure (LoggerContext.java:287) で
    org.apache.logging.log4j.core.LoggerContext.start (LoggerContext.java:139) で
    org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:76) で
    org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:31) で
    org.apache.logging.log4j.LogManager.getLogger (LogManager.java:342) で
    org.apache.logging.log4j.LogManager.getLogger (LogManager.java:301) で
         ...
原因: java.lang.ClassCastException: org.apache.logging.log4j.core.appender.FileManager を org.apache.logging.log4j.core.appender.rolling.RollingFileManager にキャストできません
    org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:73) で
    org.apache.logging.log4j.core.appender.RollingFileAppender.createAppender(RollingFileAppender.java:140) で
    ... 18以上

構成ファイルが読み取られ、アペンダーが作成されようとしているように見えますが、何が間違っているのかわかりません。

他の人の RollingFileAppender 構成を変更せずにカット アンド ペーストしようとしましたが、それでも上記のエラーが発生します。

ありがとう。

4

1 に答える 1

20

私の場合、設定ファイルには。が含まれFile appenderていRollingFile appenderます。

エラーはfileNameパラメータにありました-両方のアペンダーで同じ値を持っています。

于 2013-02-13T06:37:11.633 に答える