在启动dropwizard

时间:2017-02-14 14:05:00

标签: logback dropwizard

我需要在启动时轮换或备份当前日志文件,但无法知道如何操作。

我有一个典型的日志配置:

appenders:
    - type: console
      threshold: INFO
    - type: file
      threshold: DEBUG
      logFormat: "%-6level [%d{HH:mm:ss.SSS}] [%t] %logger{5} - %X{code} %msg %n"
      currentLogFilename: /var/log/dw-service.log
      archive: true
      archivedLogFilenamePattern: /var/log/tmp/dw-service-%d{yyyy-MM-dd}-%i.log.gz
      archivedFileCount: 3
      timeZone: UTC
      maxFileSize: 10MB

理想情况下,我想在启动时立即生成日志文件的存档,但如果失败了,我会决定获取appender的句柄并复制文件。

我无法解决如何做到这两点。有人可以提供任何帮助吗?

我到目前为止:

private void backupLogFile(){

    ch.qos.logback.classic.Logger log = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(LOG.ROOT_LOGGER_NAME);

    Iterator<Appender<ILoggingEvent>> itr = log.iteratorForAppenders();
    List<Appender<ILoggingEvent>> appenders = new LinkedList<Appender<ILoggingEvent>>();
    while (itr.hasNext()) {
        appenders.add(itr.next());

    }


    for(int i=0;i<appenders.size();++i){
        if(appenders.get(i).getName().equals("async-file-appender"))
        {
            LOG.info("FOUND FILE APPENDER");

            FileAppender myFile = (FileAppender)appenders.get(i);
                  String filename = myFile.getFile();

        }

    }



}

在运行时,Java告诉我

线程“main”中的异常java.lang.ClassCastException:ch.qos.logback.classic.AsyncAppender与ch.qos.logback.core.FileAppender不兼容

我无法弄清楚如何获取已配置的currentLogFilename,有人知道这是怎么做的吗?

由于

0 个答案:

没有答案