2012-05-10 5 views
5

Java 로깅 구성 파일을 사용하면 명명 된 로거의 속성을 정의 할 수 있습니다.특정 FileHandler의 속성을 구성하는 방법

name.heikoseeberger.heikotron.level = FINE 
name.heikoseeberger.heikotron.handlers = java.util.logging.FileHandler 

지금까지는 그렇게 좋았습니다. 이제 해당 설정을 FileHandler으로 설정하고 싶습니다. 특정 출력 파일.

java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

나는이 하나를 구성 할 수는 없지만, 내 사용자와 연관된 인스턴스 : 불행하게도 나는 단지 구성 파일에 이미 존재하는 "글로벌"의 FileHandler 구성하는 방법을 알고 로거. 난 이미 다음을 시도했지만 성공하지 :

name.heikoseeberger.heikotron.java.util.logging.FileHandler.pattern = %h/heikotron.log 
name.heikoseeberger.heikotron.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

은 특정 의 FileHandler 인스턴스의 속성을 설정하는 모든 수 있습니까? 그렇다면 어떻게 식별하고 명명해야합니까?

답변

0

나는 그렇게 생각하지 않는다. 당신이 FileHandler의 소스 코드를 검토 할 경우에 당신은 곧 로깅 목적을 위해 사용하는 파일의 패턴을 결정하기 위해 문자열 "java.util.logging.FileHandler.pattern "를 사용하는 결정할 것이다 이와 같이

private void configure() { 
     LogManager manager = LogManager.getLogManager(); 

     String cname = getClass().getName(); 

     pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log"); 
     limit = manager.getIntProperty(cname + ".limit", 0); 
     //... 
    } 

, 당신은에 가하고 있습니다 구성 파일에도 핸들러에 의해 고려되지 않습니다.

이 핸들러는 특정 로거 (예 : name.heikoseeberger.heikotro N)의 존재를인지하지 못하는 나에게 나타납니다, 그들은 단지 지정된 LogRecord를 게시하는 방법을 알고있다.

내가 볼 수있는 한, 부품의 핸들러 특정 logger는 LogManager에 의해 생성됩니다. 즉, 주어진 핸들러가 생성 될 때 요청 된 특정 로거에 대해 알지 못하므로 모든 속성이 자체적으로 설정되는 이유입니다 클래스 이름이 아니라 로거 이름을 사용합니다.

0

내가 올바르게 이해하면 java.util.logging 패키지를 사용하여 다른 로그 파일에 쓰려고합니다. 상자를 확장하지 않고도이 작업을 수행 할 수는 없습니다.

Logback과 같은 다른 로깅 프레임 워크로 전환 할 수없는 경우 java util logging.properties: How to log to two different files에 대한 답변을 확인하고 필요에 맞는 지 확인하십시오.

1

이것은 LogManger의 최상위 클래스 문서에 설명 된 config 옵션을 사용하여 수행됩니다. public 생성자를 사용하여 공용 이름이 지정된 클래스를 만들고 처리기를 구성하기 위해 필요한 모든 Java 호출을 호출합니다. 그런 다음 로깅 속성에서 생성 한 클래스를로드하도록 LogManager에 지시하여 처리기를 구성합니다. 그렇지 않으면 구성 할 사용자 정의 네임 스페이스를 생성하는 파일 핸들러를 하위 클래스화할 수 있습니다.

+0

'속성'config '. 이 속성은 임의의 구성 코드를 실행할 수 있도록하기위한 것입니다. ' 이렇게하면 파일 이름 매핑 클래스를 가진 다른 구성 파일을로드하는 데 사용할 수 있습니다 –

관련 문제