logging : 시스템 운영에 대한 기록
- 기록을 남겨 디버깅을 용이하게 함
- 에러추적, 성능, 문제점 향샹을 위해 사용
java.util.logging
- 자바에서 기본적으로 제공되는 Log package
- jre/lib/logging.properties 파일을 편집하여 로그의 출력방식 로그 레벨을 변경할 수 있음
- 로그레벨은 severe, warning, info, config, fine, finer, fines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
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 {
// Logger 객체
// getLogger("식별자")
Logger logger = Logger.getLogger("mylogger");
// MyLogger 클래스 싱글톤 패턴
// 싱글톤 패턴 : 어플리케이션이 시작도리 때 어떤 클래스가 최초 한번만 메모리를 할당하고
// 인스턴스를 만들어 사용하는 디자인 패턴
private static MyLogger instance = new MyLogger();
// 레벨별 3개의 파일
public static final String errorLog = "log.txt";
public static final String warningLog = "warn.txt";
public static final String fineLog = "fine.txt";
// 로그를 핸들링 하는 파일 핸들러
private FileHandler logFile = null;
private FileHandler warnFile = null;
private FileHandler fineFile = null;
private MyLogger() {
try {
// 파일핸들러 생성(파일명,true : append출력방식)
logFile = new FileHandler(errorLog, true);
warnFile = 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());
warnFile.setFormatter(new SimpleFormatter());
fineFile.setFormatter(new SimpleFormatter());
// 로그 레벨 설정
// 로그 전체 레벨
logger.setLevel(Level.ALL); // 레벨 전체를 출력
// 파일마다 로그레벨을 설정
fineFile.setLevel(Level.FINE);
warnFile.setLevel(Level.WARNING);
// 로거에 핸들러 추가
logger.addHandler(logFile);
logger.addHandler(warnFile);
logger.addHandler(fineFile);
}
// 싱글톤 패턴 반환
public static MyLogger getLogger() {
return instance;
}
// log() 호출 시 각 레벨에 로그 메세지 전달
public void log(String msg) {
logger.finest(msg);
logger.fine(msg);
logger.finer(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);
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
|
public class LogTest {
public static void main(String[] args) {
// 싱글톤 패턴 방식의 객체 생성
MyLogger logger = MyLogger.getLogger();
// log() 호출
logger.log("log test");
}
}
|
cs |
'OOP > Java' 카테고리의 다른 글
표준 입출력 스트림 (0) | 2022.05.22 |
---|---|
자바 입출력을 위한 I/O 스트림 (0) | 2022.05.19 |
사용자 정의 예외 클래스 (0) | 2022.05.18 |
예외처리 (Exception)는 왜 하는가? (0) | 2022.05.11 |
연산 수행에 대한 구현 reduce() 연산 (0) | 2022.05.10 |