매번 로깅 코드를 작성하는 것은 불편할 수 있습니다.
그래서 로그를 편리하게 사용할 수 있도록 클래스를 설계하고,
영구적으로 로그를 저장할 수 있는 파일 저장 기능을 포함하는 코드를 작성해 봅시다.
프로젝트 생성
my-logger/
├── src/
│ └── com/
│ └── tenco/
│ ├── ConsoleLogger.java
│ ├── FileLogger.java
│ └── MyLogger.java
└── build/
package com.tenco;
public class ConsoleLogger {
public static void log(String message) {
System.out.println(message);
}
}
package com.tenco;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileLogger {
private String fileName;
private SimpleDateFormat dataFormat;
public FileLogger(String fileName) {
this.fileName = fileName;
// 현재시간 2024-05-21-16:10:50
this.dataFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} // 생성자
public void log(String message) {
try(
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
) {
// 현재 시간
String now = dataFormat.format(new Date());
writer.write(now + " :: " +message);
writer.newLine();
writer.flush();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void readLogs() {
try(
BufferedReader reader = new BufferedReader(new FileReader(fileName))
) {
String line;
while( (line = reader.readLine()) != null ) {
System.out.println(line);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
} // end of class
package com.tenco;
public class MyLogger {
private static ConsoleLogger consoleLogger = new ConsoleLogger();
private static FileLogger fileLogger = new FileLogger("mLogger.txt");
// 콘솔창에 로그를 찍는 기능
public static void logToConsole(String message) {
consoleLogger.log(message);
}
// 콘솔창 + 파일에 저장하는 기능
public static void logToFile(String message) {
logToConsole(message);
fileLogger.log(message);
}
} // end of class
package com.tenco;
public class MainTest {
public static void main(String[] args) {
MyLogger.logToConsole("실행 1");
System.out.println("--------");
MyLogger.logToFile("예외 확인 null Pointer");
System.out.println("-----------------");
MyLogger.logToFile("예외 확인 형 변환 오류 발생");
} // end of main
} // end of class


'Java' 카테고리의 다른 글
| 2024.05.22 Java 유용한 클래스 고수준 스트림(Data/Object Stream) (0) | 2024.05.22 |
|---|---|
| 2024.05.22 Java 유용한 클래스 사용자모드와 커널모드란? (0) | 2024.05.22 |
| 2024.05.21 Java 유용한 클래스 파일복사(문자기반 입/출력), ZIP파일로 압축 (0) | 2024.05.21 |
| 2024.05.20 Java 유용한 클래스 파일 출력 스트림(문자 기반 스트림) (0) | 2024.05.20 |
| 2024.05.20 Java 유용한 클래스 파일 입력 스트림(문자 기반 스트림) (0) | 2024.05.20 |