상세 컨텐츠

본문 제목

간단하게 jdk logger 사용하기

Programming

by otamot 2007. 4. 13. 10:46

본문


뜬금없게 jakarta의 common으로 지원되는 logger도아니고 그 유명한 log4j에서 지원하는 logger도 아니고 왜 jdk logger 냐구?
매우 간단한 프로그램을 작성하는데 file에다 console에 남는 내용을 file에 남기고 싶었다.
  System.out.println....을 사용하다가 효율적으로 logging를 하고 싶었는데 직접 사용하지 않고 대개 framework의 logging 기법을 사용하기 때문에 잘 몰라서 좀 애를 먹었다. 그래서 여기 남겨서 기억해야겠다.
  아무 lib를 추가하지 않고 단순히 jdk에서 지원하는 logger를 사용하는 방법. jdk 1.4 버전부터 지원하는 java.util.logging 패키지의 클래스들을 사용하는 방법으로 간단하 예제를 남긴다. 설정파일을 사용하지 않고 직접 class에서 설정하는 방법이다. 원초적인 방법을 알고 싶다.

우선 logger 선언하고

Logger logger = Logger.getLogger("logger");

다음으로 다음으로 FileHandler을 선언하고, LogRecord와 Formatter를 설정한다.

java.util.logging.Handler fh = new java.util.logging.FileHandler("result.log");
LogRecord logRd = new LogRecord(Level.ALL,"");
Formatter formatter = new BriefFormatter();
formatter.formatMessage(logRd);
fh.setFormatter(formatter );

  여기서 Formatter를 Custom으로 구현하였다. Formatter를 상속받아서. log의 layout은 jdk에서 기본으로 정해지 default를 통해서 출력되는데 jdk의 기본 logging.properties파이을 수정해야한다. 이 예제에서는 직접 구현한 Formatter에서 coding으로 구성해 보겠다.
  구현된 BriefFormatter의 내용은 다음과 같다.

import java.util.logging.Formatter;
import java.util.logging.LogRecord;

public class BriefFormatter extends Formatter{

    private StringBuffer stringBuffer = new StringBuffer();
    synchronized public String format(LogRecord record) {

        stringBuffer.setLength(0);
        
        //다른 내용은 안 쓰고 오로지 message만 출력.
        String message = formatMessage(record);
        stringBuffer.append(message);
        stringBuffer.append("\n");
        
        return stringBuffer.toString();
    }
}

위와 같이 했다면 다음으로 선연된 logger에 FileHandler를 추가한다.

logger.addHandler(fh);

이제 다음과 같이 사용하면 된다.

logger.log(Level.INFO, "message");

이렇게 해서 초간단 예제로 끝이다.
  참고로 만일 따로 구성한 설정 파일을 사용하고 싶다면 LogManager를 선언하여 readConfiguration(...)로 설정할 수 있다.

까먹지 말자.

'Programming' 카테고리의 다른 글

이클립스 UML/ERD plugin 드디어 찾다!  (0) 2007.05.02
jMaki 관심 끄네!  (0) 2007.04.04
Memory가 부족하다는 Eclipse의 절규!  (0) 2007.03.30

관련글 더보기