본문 바로가기
Java/자바 Stream

[Java] 88. 로그와 파일 저장

글: Song hyun 2024. 5. 21.
728x90
반응형

[Java] 88. 로그와 파일 저장

1. ConsoleLogger

 


 

매번 로깅 코드를 작성하는 것은 불편한 일이다. 그래서 로그를 편리할 수 있게 클래스를 설계하고, 영구적으로 로그를 저장할 수 있는 파일 저장 기능을 포함하는 코드를 작성해보자.

 

1. ConsoleLogger

-log(): 파라미터로 입력받은 message(String)을 출력한다.

package com.tenco;

public class ConsoleLogger {

	
	public void log(String message) {
		System.out.println(message);
	}
}

2. FileLogger

-사용자 정의 생성자: String 값을 파라미터에 입력받으면 멤버변수 fileName이 초기화된다.

그 날의 연도/월/일/시/분/초를 멤버변수 dateFormat(SimpleDateFormat)에 초기화한다.

 

-log(): String 자료형인 message를 파라미터 값으로 입력받는다.

ㄴ보조스트림인 BufferedWriter-(기반)FileWriter를 이용해 file을 생성한다.

ㄴ현재 시간을 dateFormat을 통해 입력받아 출력한다.

ㄴFlush()를 통해 데이터를 흘려보낸다.

 

-readLogs(): 파라미터 값이 없는 메서드.

ㄴFileReader-BufferedReader 스트림을 통해 파일을 읽어들인다.

ㄴ파일 내부의 값이 null이 아니게 될 때까지 line값을 입력받으며, 이를 출력한다.

 

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

3. MyLogger

 

(1) logToConsole(): 파라미터 값으로 message(String 자료형)을 받는다.

위에서 작성한 consoleLogger를 통해 log를 찍는다.

 

(2) LogToFile(): 파라미터 값으로 message(String 자료형)을 받는다.

해당 변수를 logToConsole/fileLoffer.log에 넣어 파일에 저장하고 출력한다.

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);
	}
	
	
	public static void main(String[] args) {
	}
}

 

4. 테스트

728x90
반응형