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