2009년 12월 1일 화요일

java.util.logging 사용법 및 설정방법

개발을 진행하다가 로그를 남길때 사용할 수 있는 가장 간단한 방법은 java.util.logging을 사용하는 것이다. 사용법은 매우 간단하다.


로그를 사용하는 자세한 사용법은 Java Logging Overview이 자세히 설명하고 있다. 해당 문서를 번역하고 싶은 생각은 없다. 하지만 설정방법에 대하여 간단하게 Tip&Tech가 있어서 설명하려고 한다.

로그의 설정은 일반적으로 WAS에서 설정하여 사용할 것이다. 그런데 현재 개발을 모듈별로 하기 때문에 eclipse에서 위와 같은 코드를 작성하고 테스트를 진행하면 info 보다 낮은 레벨의 로그를 Console에 출력되지 않는다. 그렇게 되는 이유는 ConsoleHandler 의 기본 레벨이 Info이기 때문이다. 그러면 이 설정을 바꾸기 위해서는 설정을 바꾸어야 한다. 설정파일은 특별한 작업을 하지 않았다면( JVM 실행시 다음 파라미터 "java.util.logging.config.class" "java.util.logging.config.file" 를 추가하지 않았다면) 프로그램이 실행되는 JRE 디렉토리의 "lib/logging.properties"이다.

먼저 다음과 같이 설정을 변경한다.

java.util.logging.ConsoleHandler.level = FINEST

그런데 수정한 후에도 아무런 로그가 남지 않는다. 왜일까? 로그는 패키지명별로 로그레벨을 보유하고 있기 때문에 각 패키지의 로그레벨도 변경하여야 하기 때문이다. 그리고 각 패키지는 계층구조를 가지고 최 상위의 계층은 "" 이다.

전체 로그레벨을 변경시킨다.

.level= FINEST

이제 로그가 남기 시작한다. 모든 로그가 남기 시작한다. eclipse 소스에서 남긴 로그 JVM에서 남긴 로그 이렇게 설정하면 모든 로그가 남기 때문에 내가 원하는 결과는 아니다. 왜냐하면 각 계층별로 로그레벨이 null인경우 상위 계층의 로그레벨을 따르기 때문이다.

원하는 결과를 위하여 다시한번 계층의 로그레벨을 변경시켜보자.


이제 내가 남긴 로그만 INFO 이하의 로그가 남는다.






댓글 없음:

댓글 쓰기