2015-01-08 1 views
1

В последнее время я изучаю ведение журнала Java, и в javadoc говорится, что SimpleFormatter можно настроить с помощью свойства java.util.logging.SimpleFormatter.format.java.util.logging.SimpileFormatter Конфигурация системного свойства

В приведенном ниже коде я попытался дважды установить формат с помощью System.setProperty(), но, похоже, не будет работать во второй попытке, «formatterB» в нижнем коде по-прежнему будет использовать формат, определенный в "formatterA".

В чем причина этого, спасибо.

public class Test { 
    public static void main(String[] args) { 
     try { 
      Logger loggerA = Logger.getLogger("A"); 
      System.setProperty("java.util.logging.SimpleFormatter.format", "A: %1$tc %2$s%n%4$s: %5$s%6$s%n"); // first attempt 
      Handler handlerA = new FileHandler("A.log", 0, 1, true); 
      SimpleFormatter formatterA = new SimpleFormatter(); 
      handlerA.setFormatter(formatterA); 
      loggerA.addHandler(handlerA); 
      loggerA.info("Logger A info message"); 

      Logger loggerB = Logger.getLogger("B"); 
      System.setProperty("java.util.logging.SimpleFormatter.format", "B: %1$tc %2$s%n%4$s: %5$s%6$s%n"); // second attempt 
      Handler handlerB = new FileHandler("B.log", 0, 1, true); 
      SimpleFormatter formatterB = new SimpleFormatter(); 
      handlerB.setFormatter(formatterB); 
      loggerB.addHandler(handlerB); 
      loggerB.info("Logger B info message"); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

ответ

2

SimpleFormatter stores the format in a static field, который хранится один раз при загрузке класса. Формат используется для всех экземпляров класса SimpleFormatter.

Вам необходимо свернуть собственный класс форматирования или классы для поддержки нескольких форматов.

+0

уточнил путаницу, очень полезно :) – foolhunger

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

  • Нет связанных вопросов^_^