2015-12-11 4 views
1

Я пытаюсь создать файл журналов в приложении Java swings, которое будет содержать все сообщения, сгенерированные кодом. Но, к сожалению, он не создает 1 единственный файл журнала, но создает структуру, как показано. Мне нужен один файл журнала.Файл журнала Java создает несколько копий

enter image description here

Мой код:

//get the logger object 
logger = Logger.getLogger("MyLog"); 

try { 
    // This block configure the logger with handler and formatter 
    loggerFH = new FileHandler(System.getProperty("user.dir") + "\\resources\\logs\\logs.txt",true); 
    logger.addHandler(loggerFH);    

    SimpleFormatter formatter = new SimpleFormatter(); 
    loggerFH.setFormatter(formatter); 

} catch (IOException | SecurityException ex) { 
    logger.severe(ex.getMessage()); 
    outputArea.append(ex.getMessage()); 

} 

ответ

0

Я понял, что мой файл Logger использовался несколькими экземплярами за раз. Поэтому, когда 1 экземпляр filehandler заблокировал доступ к файлу, создается новый файл. Поэтому я создал класс Synchronized для обработки всех протоколов. И это сработало отлично.

public class SynchronizedLogger { 

//Logger to put error logs and messages in the log file 

public static Logger logger = Logger.getLogger("MyLog"); 


//Logger Filehandler 
private static FileHandler loggerFH; 

public SynchronizedLogger() { 
} 

public static synchronized void writeLog(String message) { 
    logger.info(message); 
} 

public SynchronizedLogger(int i) { 
    try { 
     synchronized (this) { 
      // This block configures the logger with handler and formatter 
      loggerFH = new FileHandler(System.getProperty("user.dir") + "\\resources\\logs\\logs.txt", 0, 1, true); 
      logger.setUseParentHandlers(false); 
      logger.addHandler(loggerFH); 

      SimpleFormatter formatter = new SimpleFormatter(); 
      loggerFH.setFormatter(formatter); 
     } 

    } catch (IOException | SecurityException ex) { 
     writeLog(ex.getMessage()); 
     outputArea.append("\n\n" + ex.getMessage()); 

    } 
} 

}

1

Ваши файлы вращают.

ли вы попробовать решение от этого: Java FileHandler disable log rotation

FileHandler Fh = новый FileHandler ("путь", 0, 1, ложь);

+0

Да я попробовал это. Не работает :( – Anuja

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