2013-02-02 22 views
7

Tôi đang cố gắng chuyển từ sử dụng FileAppender sang RollingFileAppender bằng cách sử dụng log4j2 (xảy ra cả với beta3 và beta4 lọ).gặp lỗi khi cố gắng tạo log4j2 rollingfileappender

Tôi có nó cấu hình như:

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

và trong các mã, tôi đang cố gắng để có được những logger theo cách này:

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

nhưng tôi nhận được ngoại lệ này khi tôi chạy nó:

 
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 

Dường như tập tin cấu hình đang được đọc và ứng dụng đang cố gắng tạo ra nhưng không chắc tôi đang làm gì g sai.

Tôi đã thử cắt và dán cấu hình RollingFileAppender của người khác với bất kỳ sửa đổi nào nhưng tôi vẫn gặp phải lỗi ở trên.

Cảm ơn.

Trả lời

18

Trong tệp cấu hình của tôi chứa File appender với RollingFile appender.

Lỗi trong tham số fileName - giá trị này có cùng giá trị trong cả hai ứng dụng .

+1

Điều này có vẻ đúng. Rõ ràng (như của 2.3) bạn không thể có hai 'Appender' khác nhau với cùng một' fileName' – MikeW