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 構成を変更せずにカット アンド ペーストしようとしましたが、それでも上記のエラーが発生します。
ありがとう。