반응형
logging
시스템 운영에 대한 기록을 남긴다
오류가 발생했을 때 그 오류에 대한 기록을 남겨 디버깅을 용이하게 한다
로그 파일에 기록하는 코드를 추가하여 필요한 정보가 로그로 남을 수 있도록 한다
디버깅, 시스템 에러 추적, 성능, 문제점 향상들을 위해 사용한다
어느정도로 로그를 남겨야 하나
- 너무 적은 로그: 정확한 시스템의 상황을 파악하기 어려움
- 너무 많은 로그: 빈번한 file I/O의 오버헤드와 로그 파일의 백업 문제가 있을 수 있다
java.util.logging
자바에서 기본적으로 제공하는 log package다
파일이나 콘솔에 로그 내용을 출력할 수 있다
logging.properties
파일을 편집하여 로그 레벨을 변경할 수 있다
로그 레벨은 다음과 같다
- severe
- warning
- info
- config
- fine
- finer
- finest
Logger 예제
Logger
인스턴스를 생성한다
로그를 남기기 위해 FileHandler
를 생성한다
FileHandler
의 로그 레벨을 따로 지정하고
Logger
에 생성된 addHandler()
메소드를 통해 FileHandler
를 추가한다
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class MyLogger {
public static final String errorLog = "log.txt";
public static final String warningLog = "warning.txt";
public static final String fineLog = "fine.txt";
private static MyLogger instance = new MyLogger();
private Logger logger = Logger.getLogger("MyLogger");
private FileHandler logFile = null;
private FileHandler warningFile = null;
private FileHandler fineFile = null;
private MyLogger() {
try {
logFile = new FileHandler(errorLog, true);
warningFile = new FileHandler(errorLog, true);
fineFile = new FileHandler(errorLog, true);
} catch (IOException e) {
e.printStackTrace();
}
logFile.setFormatter(new SimpleFormatter());
warningFile.setFormatter(new SimpleFormatter());
fineFile.setFormatter(new SimpleFormatter());
logger.setLevel(Level.ALL);
fineFile.setLevel(Level.FINE);
warningFile.setLevel(Level.WARNING);
logger.addHandler(logFile);
logger.addHandler(warningFile);
logger.addHandler(fineFile);
}
public static MyLogger getLogger() {
return instance;
}
public void log(String msg) {
logger.finest(msg);
logger.finer(msg);
logger.fine(msg);
logger.config(msg);
logger.info(msg);
logger.warning(msg);
logger.severe(msg);
}
public void find(String msg) {
logger.finer(msg);
}
public void warning(String msg) {
logger.warning(msg);
}
}
반응형
'Java' 카테고리의 다른 글
IO Stream (0) | 2024.09.05 |
---|---|
wait(), notify()를 활용한 동기화 (0) | 2024.08.29 |
사용자 정의 예외 클래스 (0) | 2024.08.25 |
예외 처리하기와 미루기 (0) | 2024.08.24 |
예외 처리 (0) | 2024.08.23 |