💡 매번 로깅 코드를 작성하는 것은 불편할 수 있습니다. 그래서 로그를 편리하게 사용할 수 있도록 클래스를 설계하고, 영구적으로 로그를 저장할 수 있는 파일 저장 기능을 포함하는 코드를 작성해 봅시다. |
프로젝트 생성
my-logger/
├── src/
│ └── com/
│ └── tenco/
│ ├── ConsoleLogger.java
│ ├── FileLogger.java
│ └── MyLogger.java
└── build/
package com.tenco;
public class ConsoleLogger {
public 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 dateFormat;
public FileLogger(String fileName) {
this.fileName = fileName;
this.dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
public void log(String message) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true))){
// 현재 시간
String now = dateFormat.format(new Date());
writer.write(now + " :: " + message);
writer.newLine();
writer.flush();
} catch (Exception e) {
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) {
e.printStackTrace();
}
}
}
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);
}
}
실행
실행 1
---------------------
예외확인 null pointer
예외 확인 형 변환 오류 발생
총 3번 실행했음
'Java > JAVA 3 - 유용한 클래스' 카테고리의 다른 글
고수준 스트림(Data/Object Stream) - 19 (0) | 2024.05.22 |
---|---|
사용자모드와 커널모드란? - 18 (0) | 2024.05.22 |
파일복사(문자기반 입/출력), ZIP파일로 압축 - 16 (0) | 2024.05.21 |
파일 출력 스트림(문자 기반 스트림) - 15 (0) | 2024.05.21 |
파일 입력 스트림(문자 기반 스트림) - 14 (0) | 2024.05.21 |