Java

로그와 파일 저장

H_u 2024. 5. 31. 11:34
728x90
반응형
SMALL
💡 매번 로깅 코드를 작성하는 것은 불편할 수 있습니다. 그래서 로그를 편리하게 사용할 수 있도록 클래스를 설계하고, 영구적으로 로그를 저장할 수 있는 파일 저장 기능을 포함하는 코드를 작성해 봅시다.

 

프로젝트 생성

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);

}

}

728x90
반응형
SMALL