[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. 테스트
'Java > 자바 Stream' 카테고리의 다른 글
[Java] 87. 파일 복사(문자기반 입/출력), ZIP으로 압축 (0) | 2024.05.21 |
---|---|
[Java] 86. 파일 출력 스트림 (2) (문자 기반 스트림) (0) | 2024.05.20 |
[Java] 85. 파일 입력 스트림(1) (문자 기반 스트림) (0) | 2024.05.20 |
[Java] 84. 문자 기반 스트림 (0) | 2024.05.17 |
[Java] 83. 파일 Copy 예제: 기반 스트림에 확장을 붙여 더욱 빠르게 연산시켜보자. (0) | 2024.05.17 |