我正在尝试从使用 FileAppender 切换到使用 log4j2 的 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 错误无法在类 org.apache.logging.log4j.core.appender.RollingFileAppender 中为元素 RollingFile java.lang.reflect.InvocationTargetException 调用方法 createAppender 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 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 配置而不进行任何修改,但我仍然收到上述错误。
谢谢。