java - 尝试创建 log4j2 rollingfileappender 时出错

标签 java configuration rollingfileappender log4j2

我正在尝试从使用 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 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

看起来好像正在读取配置文件并且正在尝试创建附加程序但不确定我做错了什么。

我已经尝试剪切和粘贴其他人的 RollingFileAppender 配置,但没有任何修改,但我仍然遇到上述错误。

谢谢。

最佳答案

在我的例子中,配置文件包含 File appenderRollingFile appender

Error was in fileName parameter - it have same value in both appenders.

关于java - 尝试创建 log4j2 rollingfileappender 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657572/

相关文章:

java - 在 Java 中反序列化复合对象

java - 客户端/服务器程序之间的通信停止(java)

java - 如何以 Spring 形式计算带有变量的文本区域?

java - 使用 RollingFileAppender 进行毫秒级滚动时 Log4j2 'Unable to move file' 错误

yaml - Log4j2 : How to configure multiple Appender with same type in Yaml configuration

Log4Net RollingFileAppender 生成重复日志

java - AWT 组件上的半透明面板

子页面上的 Magento 404

macos - Mac OS X 10.4+ 上的 Bash 配置

Hadoop reducer 数量配置选项优先级