2015-01-08 6 views
1

최근에 자바 로깅을 배우는 중이며 javadoc에는 "java.util.logging.SimpleFormatter.format"속성을 사용하여 SimpleFormatter를 구성 할 수 있다고 나와 있습니다.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