Java
로그와 파일 저장
햄발자
2024. 6. 28. 16:03
매번 로깅 코드를 작성하는 것은 불편할 수 있다. 그래서 로그를 편리하게 사용할 수 있도록 클래스를 설계하고, 영구적으로 로그를 저장할 수 있는 파일 저장 기능을 포함하는 코드를 작성해 보자!
프로젝트 생성!
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);
}
}