- [Java] 88. 로그와 파일 저장2024년 05월 21일
- Song hyun
- 작성자
- 2024.05.21.:25
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반응형'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 다음글이전글이전 글이 없습니다.댓글