이번 시간에는 java.util.logging을 사용해서 로그를 찍어 보도록 하겠습니다.

사용 방법이 아주 간단하고 콘솔창과 파일로도 저장할 수 있습니다.

파일은 xml형식으로 출력됩니다.


샘플 소스는 아래와 같습니다.

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class LogTest {
 
    private static final Logger logger = Logger.getLogger(LogTest.class.getName());
    private FileHandler fileHandler;
 
    public LogTest() {
        addFileHandler(logger);
    }
 
    public static void main(String[] args) {
        logger.info("---main() Start---");
 
        LogTest le = new LogTest();
 
        // 정보로그
        logger.info("Info... log");
        // 오류로그
        logger.warning("Warning... log");
        // 에러로그
        logger.severe("Severe...  log");
 
        logger.info("---main() End---");
    }
 
    private void addFileHandler(Logger logger) {
        try {
            // 파일저장
            fileHandler = new FileHandler(LogTest.class.getName() + ".log");
        } catch (IOException ex) {
            logger.log(Level.SEVERE, null, ex);
        } catch (SecurityException ex) {
            logger.log(Level.SEVERE, null, ex);
        }
        logger.addHandler(fileHandler);
    }
}



[실행결과]

image1.png



[출력된 로그파일]

LogTest.log

<?xml version="1.0" encoding="x-windows-949" standalone="no"?>

<!DOCTYPE log SYSTEM "logger.dtd">

<log>

<record>

  <date>2012-04-01T11:53:00</date>

  <millis>1333253313253</millis>

  <sequence>1</sequence>

  <logger>LogTest</logger>

  <level>INFO</level>

  <class>LogTest</class>

  <method>main</method>

  <thread>10</thread>

  <message>Info... log</message>

</record>

<record>

  <date>2012-04-01T11:53:00</date>

  <millis>1333253313253</millis>

  <sequence>2</sequence>

  <logger>LogTest</logger>

  <level>WARNING</level>

  <class>LogTest</class>

  <method>main</method>

  <thread>10</thread>

  <message>Warning... log</message>

</record>

<record>

  <date>2012-04-01T11:53:00</date>

  <millis>1333253313253</millis>

  <sequence>3</sequence>

  <logger>LogTest</logger>

  <level>SEVERE</level>

  <class>LogTest</class>

  <method>main</method>

  <thread>10</thread>

  <message>Severe...  log</message>

</record>

<record>

  <date>2012-04-01T11:53:00</date>

  <millis>1333253313253</millis>

  <sequence>4</sequence>

  <logger>LogTest</logger>

  <level>INFO</level>

  <class>LogTest</class>

  <method>main</method>

  <thread>10</thread>

  <message>---main() End---</message>

</record>

</log>

 


로그파일이 xml형식으로 나와서 보기 좀 불편하지만 간단하게 사용하기는 편한것 같습니다.

System.out.println()을 사용하면 콘솔창으로 밖에 표시가 안되지만, java.util.logging을 사용하면

간단하게 파일로 저장할 수 있습니다.

특별하게 디버깅 해야 할곳이 있다면 유용하게 써먹을수 있을것 같네요. ^^


감사합니다.