我需要在启动时轮换或备份当前日志文件,但无法知道如何操作。
我有一个典型的日志配置:
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,有人知道这是怎么做的吗?
由于