시스템 운영에 대한 기록
파일이나 콘솔에 로그 내용을 출력
log packagejre/lib/logging.properties 파일을 편집하여logging 패키지에서 제공하는 로그 레벨 이란?
severe(가장 높은 레벨)
warning
info
config
fine
finer
finest(가장 낮은 레벨)
낮은 레벨→ 높은 레벨 순으로 log가 찍힘
log4j 를 많이 사용하고 있음INFO < 경고 FINE < 심각 WARNINGlogger.setLevel(Level.INFO);
fineFile.setLevel(Level.FINE);
warningFile.setLevel(Level.WARNING);

프로젝트 선택 + F5 ⇒ 로그 파일 자동 생성
MyLogger myLogger = MyLogger.getLogger();
myLogger.log("log test");


warning 레벨이 fine 보다 높기때문에 warning 이 나중에 출력
이클립스 자동 설치


아래 파일을 이클립스로 꺼내보기

INFO 로 되어있으므로, 콘솔에 정보부터 찍힌다

위 빨간 표시 부분을 java.util.logging.ConsoleHandler.level = FINE 으로 변경
MyLogger.java 에서 logger.setLevel(Level.ALL); 로 변경하면? FINE부터 찍힌다
MyLogger.java
public class MyLogger {
Logger logger = Logger.getLogger("mylogger");
private static MyLogger instance = new MyLogger();
public static final String errorLog = "log.txt";
public static final String warningLog = "warning.txt";
public static final String fineLog = "fine.txt";
private FileHandler logFile = null;
private FileHandler warningFile = null;
private FileHandler fineFile = null;
private MyLogger(){ // 싱글톤 패턴
try {
logFile = new FileHandler(errorLog, true);
warningFile = new FileHandler(warningLog, true);
fineFile = new FileHandler(fineLog, true);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
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 fine(String msg){
logger.fine(msg);
}
public void warning(String msg){
logger.warning(msg);
}
}
null 이거나 중간에 space 가 3개 이상인 경우 오류 발생FileHandler 생성FileHandler 의 level을 지정addHandler() 메서드로 FileHandler 를 추가public class StudentNameFormatException extends IllegalArgumentException{
public StudentNameFormatException(String message){
super(message);
}
}
public class Student {
private String studentName;
MyLogger myLogger = MyLogger.getLogger();
public Student(String studentName) {
if (studentName == null) {
throw new StudentNameFormatException("name must not be null");
}
if (studentName.split(" ").length > 3) { // 스페이스 3개이상
throw new StudentNameFormatException("이름이 너무 길어요");
}
this.studentName = studentName;
}
public String getStudentName() {
myLogger.fine("begin getStudentName()");
return studentName;
}
}
MyLogger myLogger = MyLogger.getLogger();
String name = null;
try {
Student student = new Student(name);
} catch (StudentNameFormatException e) {
myLogger.warning(e.getMessage());
}
try {
Student student = new Student("yeppi Lee Kim Test");
} catch (StudentNameFormatException e) {
myLogger.warning(e.getMessage());
}
Student student = new Student("yeppi");
String sName = student.getStudentName();



WARNING 은 FINE 보다 높은 레벨이기 때문에WARNING 이상의 레벨만 찍고, 낮은 레벨인 FINE 은 찍히지 않음