2015-12-22 146 views
0

我使用下面的代码来配置我的日志记录。Util日志记录不会删除旧日志文件轮流

public Boolean configureLogPath(String logPath, String level, String logComponents, int logFileSize, 
     int logFileCount) { 
    int logFileSizeInKbs = logFileSize * 1000; 
    Boolean result = false; 
    String[] splitComponents = logComponents.split(","); 
    for (String component : splitComponents) { 
     loggableComponents.add(component); 
    } 
    switch (level) { 
    case "info": 
     LOGGER.setLevel(Level.INFO); 
     break; 
    case "severe": 
     LOGGER.setLevel(Level.SEVERE); 
     break; 
    case "debug": 
     LOGGER.setLevel(Level.CONFIG); 
     break; 
    case "off": 
     LOGGER.setLevel(Level.OFF); 
     break; 
    default: 
     LOGGER.setLevel(Level.SEVERE); 
    } 
    try { 
     simpleFormatter = new SimpleFormatter(); 
     logFileHandler = new FileHandler(logPath, logFileSizeInKbs, logFileCount); 
     logFileHandler.setFormatter(simpleFormatter); 
     LOGGER.setFilter(filter); 

     LOGGER.addHandler(logFileHandler); 
     result = true; 
    } catch (SecurityException e1) { 
     result = false; 
     LOGGER.log(Level.SEVERE, "Security exception when reading log file" + e1); 
    } catch (IOException e1) { 
     result = false; 
     LOGGER.log(Level.SEVERE, "IO Exception when reading log file" + e1); 
    } 
    return result; 
} 

然而,尽管我已经给出了相关参数中的FileHandler为要旋转的日志,旧日志文件仍然存在。这是实用程序日志记录的行为还是有什么我可以做的,以在旋转期间删除旧文件?

回答

0

这是实用程序日志记录的行为,还是有什么我可以做的在旋转过程中删除旧文件?

每对的FileHandler documentation

对于旋转组文件,每个文件达到给定大小 限制,它是封闭的,转出,并打开新的文件。

如果你想删除旋转的文件,那么就不要旋转。轮换的目标是让您可以读取旧的日志数据。

如果您确实想要旋转并删除旧文件,您可以覆盖FileHandler.setOutputStream方法来侦听轮播并编写自己的删除方法。

private boolean constructed; 
@Override 
protected synchronized void setOutputStream(OutputStream out) throws SecurityException { 
    super.setOutputStream(out); 
    if (constructed && Level.OFF.equals(super.getLevel())) { //Rotating... 
     deleteRotatedFiles(); 
    } 
    constructed = true; 
} 
+0

如果我手动关闭日志时条件删除文件不会这么做吗?这就是说,如果我的日志还没有达到轮换数量,并且如果我想停止日志记录,我会将当前日志的日志级别设置为“关闭”。那么这不会删除当前正在使用的日志吗? – mayooran

+0

对于新构建的FileHandler来说。这并不难,因为您可以将级别设置为2147483646而不是OFF。或者可以修改FileHandler以跟踪它不是第一次调用。 – jmehrens

相关问题