2011-11-01 4 views
0

상속하고 싶습니다 java.util.logging.Logger. 현지화가 필요하지 않을 때 기본 ResourceBundle을 가져 오는 최소한의 방법이 있습니까?

static Logger getLogger(String name) 
static Logger getLogger(String name, String resourceBundleName) 

기본 ResourceBundle 또는 어떤 종류를 얻을 수있는 방법이 있나요 : 만 볼 수 생성자는 인스턴스를 취득하고자 할 때, 그들은 두 가지 방법을 제공하는 것이이 사실에도 불구하고

protected Logger(String name, String resourceBundleName) 

입니다 기본 이름은 ResourceBundle이므로 국제화 속성 파일 및 관련 객체를 만들지 않고 생성자를 사용할 수 있습니까?

물론 래퍼 클래스를 생성하고 getLogger(String name)을 사용하여 ResourceBundle 이름이 필요하지 않게 할 수 있습니다. 불행히도 그 의미는 내가 사용하려는 모든 Logger 메서드에 대한 래퍼 메서드를 구현해야 할 것입니다. (너무 많은 타이핑).

편집 : 로거에서 기본 현지화 데이터를 가져 오는 다음 시도가 작동하지 않습니다.

import java.util.logging.Logger; 

class JLogger extends Logger 
{ 
    static Logger dummyLogger = Logger.getLogger("com.dummy.utilities"); 

    private JLogger(String name) 
    { 
     super(name, JLogger.dummyLogger.getResourceBundleName()); 
    } 

    static JLogger getJLogger(String name) 
    { 
     return new JLogger(name); 
    } 

    public void severe() // a zero arguments version of severe 
    { 
     severe(""); 
    } 
} 

getResourceBundleName()은 null을 반환합니다. 두 번째 인수가 null이면 super(name, resourceName) 생성자는 로깅을 수행하지 않는 무언가를 작성합니다.

답변

1

불행히도 내가 사용하려는 모든 로거 메서드에 대해 래퍼 메서드를 구현해야한다는 것을 의미합니다. (너무 많은 타이핑).

이미 할 필요가 없습니다. 이미 완료되었습니다. SLF4JCommons Logging을 살펴보면, java.util.logging을 감안한 적절한 래퍼를 제공하여 해당 API의 끔찍한 점을 숨길 수 있습니다.

이 두 API는 java.util.logging을 우회하여 Logback 또는 Log4J와 같은 적절한 기본 로그 구현에 위임 할 수도 있습니다.