2015-12-22 1 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

Смежные вопросы