2010-11-27 9 views
5

나는 외부 라이브러리를 사용하는 자바 프로그램을 가지고있다. 주 프로그램은 메시지를 기록하기 위해 log4j을 사용하고 라이브러리는 java.util.logging을 사용합니다.java.util.logging을 파일로 리디렉션하는 방법은 무엇입니까?

내 문제는 외부 라이브러리 및 메인 프로그램의 로그 메시지가 콘솔에 혼합되어 있다는 것입니다.

모두 외부 라이브러리의 로그 메시지를 파일로 리디렉션하고 싶습니다. 나는 logging.properties 파일 그렇게하려고 : 콘솔에 나타나는 계속 불행하게도, 외부 라이브러리에서 로그 메시지를

System.setProperty("java.util.logging.config.file", "logging.properties"); 

:

handlers= java.util.logging.FileHandler 
.level= INFO 
java.util.logging.FileHandler.pattern = foo.log 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

이 파일은 초기화됩니다. java.util.logging의 로그 메시지를 가로 채기 위해 slf4j과 같은 것을 사용해야합니까?

감사합니다.

+0

복제본 http://stackoverflow.com/questions/751736/how-to-get-java-logger-output-to-file-by-default –

답변

11

내 프로그램 중 일부 코드는 다음과 같습니다. 또한 자동 회전을 수행합니다. config 클래스는 속성 파일에서 읽은 내 자신의 클래스입니다. 당신은 당신 자신의 가치로 그것을 대체 할 수 있습니다.

Logger rootLogger = Logger.getLogger(""); 
logHandler = new FileHandler(config.getLogFile(), 
          config.getLogRotateSize()*1024*1024, 
          config.getLogRotateCount(), false); 
logHandler.setFormatter(new SimpleFormatter()); 
logHandler.setLevel(Level.INFO); 
rootLogger.removeHandler(rootLogger.getHandlers()[0]); 
rootLogger.setLevel(Level.INFO); 
rootLogger.addHandler(logHandler); 

참고 독립 실행 형 프로그램입니다. 모든 응용 프로그램 서버에는 자체 로깅 구성 도구가 있습니다. 동적 디버그 모드가 필요한 경우 프로그램은 포맷터와 레벨을 즉시 변경할 수도 있습니다.

+0

와우 감사합니다. 완벽하게 작동했습니다. – gulbrandr

관련 문제