2009-07-24 3 views
1

현재 java.util.logging.Logger에 대한 두 가지 문제로 어려움을 겪고 있습니다.
1)) 메소드와 같지만, 그 메소드가 출력 (System.out.print 및 println과 같은 기능) 다음에 줄 바꿈을 삽입해서는 안된다는 것입니다. format() 메서드를 이미 재정의했습니다. 로그 레코드에 "no-linebreak-flag"를 추가하고 형식 메서드에서이 플래그를 분석하면 너무 느릴 수 있습니다. 실시간 응용 프로그램 ". 이 같은 sthg 달성하는 올바른 방법은 무엇입니까?Java Logger - "줄 바꿈 없음"및 "명시 적 클래스 로깅"문제가 발생했습니다.

2) 현재 원하는 로거를 만드는 공장 클래스가 있습니다 (나는 FileLogging 및 콘솔 로깅 사이에 다릅니다) -하지만 정말 찾을 수 없습니다. Logger에 어떤 패키지/클래스 ("모듈")에 기록할지 여부를 알려주는 것이 가능한지 또는 각 클래스의 Debug 플래그를 확인한 다음 Logger (디버그 == true) 또는 아닙니다. 또한 가능한 경우 로깅 속성 파일이 아닌 소스 코드를 통해 필요한 모든 설정을 수행하고 싶습니다.

Logger에 대해 약간의 느낌이 들었습니다. 아직 이해하지 못했습니다. ^^

미리 감사드립니다!

답변

1

# 2 - 모든 정보를 로깅 설정 파일에 저장해야합니다. 요점은 당신이 당신의 코드에서, 그리고 속성 파일들로 이런 종류의 것들을 슬라이스한다는 것입니다.

는 기본적으로 - 당신은 항상 당신의 코드에서 logger.debug()를 호출하고, 로깅 디버그 메시지를 필터링하도록 구성되어있는 경우, 당신은 내가

과 같은 코드를 보았다

옷자락의 출력을 볼 수 없습니다

if(logger.debugenabled()){ 
    logger.debug(); 
} 

내가 질문했을 때 사람들은 logger.debug 호출의 성능 저하를 원하지 않는다고 말했습니다. 내 겸손한 의견은 응용 프로그램의 작은 부분에만 관련이있다, 당신은 아마 logger.debug 호출을 떠나야하고, 로깅 프레임 워크가 돌봐 줄 것입니다.

아 - 콘솔 첨부 파일의 소스 코드를 확인했습니다. 개행 문자가 하드 코드 된 것처럼 보입니다.

 for (int i = 0; i < len; i++) { 
     this.writer.write(s[i]); 
     this.writer.write(Layout.LINE_SEP); 
     } 
    } 
    } 
+1

'if debugEnabled'관용구의 진정한 이유는 디버그에 전달 된 인수 문자열을 조합하는 데 드는 비용을 피할 수 있기 때문입니다. –