2014-11-12 4 views
0

У меня есть продукт, с помощью которого я запускаю свое приложение (которое я написал). Это многопоточное приложение, которое обращается к одному файлу журнала. Я столкнулся с проблемой, что каждый раз, когда я запускаю свой файл журнала приложений, добавляется. Только когда я перезапускаю продукт, создается новый файл журнала. Но я хочу, чтобы каждый раз, когда выполнялось мое приложение, я хочу только свежий контент в моем файле журнала.Переписывание в тот же файл журнала каждый раз в log4j

Ниже приведен код.

//Log4j initialization 
public void initLog4j() throws MyException { 

    if (logfile != null){ 
     myLog4j = Logger.getLogger("MY_LOG");   
     try { 
      appender = new FileAppender(new PatternLayout("%m%n"),logfile.getAbsolutePath(),false); 
      appender.setAppend(false); 
      myLog4j.addAppender(appender); 
      myLog4j.setLevel((Level) Level.DEBUG); 
     } catch (IOException e) { 
      throw new MyException(104, logfile.getAbsolutePath()); 
     }   

    } 

//Stopping to write to log4j 
public void stop() {   
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");   
    writeToLog4j(INFO,new StringBuilder(name).append(" stop: ").append(dateFormat.format(new Date())).toString(),true); 
} 

То, что я пытался до сих пор я пытался удалить файл, но он не был, как удаление FileDescriptor не был выпущен. Поэтому я добавил следующий код в функции stop()

if(null != appender) { 
     appender.close(); 
    } 

После того, как этот новый файл будет сгенерирован или существующий файл будет перезаписан. Но каждый раз, когда выполняется мое приложение, я получаю сообщение ниже каждого раза при попытке записать в файл журнала

log4j: ОШИБКА Попытка добавить к закрытому приложению с именем [null].

Пожалуйста, помогите мне в решении этого вопроса.

+0

Есть ли причина, по которой вы программно конфигурируете log4j? – Fildor

+0

Нет конкретной причины. Мне было легко. Я не знаю много о файле свойств и как их использовать в log4j. Файл свойств Wih можно решить? Если да, то как? – user3540481

+0

Непонятно, когда создается новый файл журнала. В чем разница между «при перезапуске продукта» и «при каждом запуске приложения» ... – Fildor

ответ

1

Сообщение об ошибке указывает на то, что вы должны удалить приложение после его закрытия. Кажется, log4j не сделает это автоматически.