일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 티스토리챌린지
- React Native
- java
- 코테
- 리액트 네이티브
- 리액트네이티브
- 자바
- 태그
- 코딩테스트
- 오블완
- 스프링
- 프로젝트
- 백엔드
- 프로그래머스
- 리액트
- 자바스크립트
- map
- firebase
- 2025 프로그래머스 코드챌린지 2차 예선
- Spring
- project
- 파이어베이스
- javascript
- 코딩
- node.js
- React
- ReactNative
- PCCE
- expo
- controller
- Today
- Total
양갱의 개발 블로그
[Spring] 로그 찍기, 로그 기록 만들기 로깅 유틸리티 Log4j 정의 및 구조 본문
교재 :
스프링 코딩 공작소
https://thebook.io/080266/0378/
스프링 코딩 공작소: 11.1.1 로깅 유틸리티 Log4j
더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
thebook.io
Log4j 란?
아파치 소프트웨어 라이선스에 따라 배포되는 로깅 프레임 워크
안정적, 신속성, 유연성
-> 시스템 성능에 큰 영향 X
즉,
선택적인 로그를 남기거나 특정 파일에 로그를 기록할 수 있는 환경을 제공
로그를 찍는 이유로는 디버깅 하는 방법 중에 하나이기도 하지만,
매번 그냥 로그에 찍는 것보다 발생했던 원인을 기록하고 개발자가 확인 할 수 있어야 한다.
그런 상황에 대처하기 위해서 파일이나 DB에 저장하는데 문제가 발생했을 때 자세한 상황을 파악 할 수 있게 해준다. 그래서 로깅 유틸리티는 개발자가 자세한 상황을 파악할 수 있게 하므로 개발을 테스팅할 때 빠질 수 없다.
스프링 MVC에서 로깅 유틸리티의 라이브러리를 포함해야 함
pom.xml 파일에 아래 코드를 추가한다
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
Log4j 구조
logger, appender, layout으로 구성되어 있음
LOGGER
로그 출력 여부 = 로깅 레벨에 따라 결정됨
여기에서 출력된 로그 정보는 다음 appender에 전달됨
▼ 표 11-1 Log4j의 로깅 레벨
레벨 | 설명 |
FATAL | 조기 종료를 유발하는 심각한 오류가 발생한 상태를 나타냅니다. |
ERROR | 기타 런타임 오류 또는 예기치 않은 상태를 나타냅니다. |
WARN | 사용되지 않는 API 사용, API의 사용 빈도, 오류, 바람직하지 않거나 예기치 않은 런타임 상황의 경고성 메시지를 나타냅니다. |
INFO | 시작, 종료 같은 런타임 이벤트 메시지를 나타냅니다. |
DEBUG | 디버그 용도로 시스템 흐름에 대한 자세한 정보를 나타냅니다. |
TRACE | 가장 하위 로깅 레벨로, 모든 로그에 대한 상세한 정보를 나타냅니다. |
해당 로깅 레벨은 상위 레벨을 모두 출력한다.
이말은 즉
log4j 로깅 레벨이 TRACE라면 상위 레벨인 DEBUG, INFO, WARN, ERROR, FATAL 을 출력한다.
또는 INFO 레벨이라면 상위 레벨인 WARN, ERROR, FATAL을 출력한다.
프로그램으로부터 로깅 정보를 받아 들이는 부분이 LOGGER이다
APPENDER
전달 받은 로그 정보를 출력할 위치(파일, 콘솔, DB 등)를 결정하는 클래스
▼ 표 11-2 Appender의 유형
클래스 | 설명 |
ConsoleAppender | 콘솔에 로그 정보를 출력합니다. |
FileAppender | 파일에 로그 정보를 출력합니다. |
RollingFileAppender | 로그 크기가 지정한 용량 이상이 되면 다른 이름의 파일로 출력합니다. |
DailyRollingFileAppender | 하루 단위로 로그 정보를 파일에 출력합니다. |
SMTPAppender | 로그 메시지를 이메일로 보냅니다. |
NTEventLogAppender | 윈도의 이벤트 로그 시스템에 로그 정보를 기록합니다. |
로깅 정보를 여러가지 장치에 내보내는 것이 APPENDER이다.
LAYOUT
로그 정보의 출력 형식을 결정함
클래스 유형은 다음과 같고 단순한 텍스트 출력, 포맷을 직접 지정한 패턴, HTML 문서 형식 등을 제공
▼ 표 11-3 layout의 클래스 유형
클래스 | 설명 |
DateLayout | 로그 정보를 날짜 중심으로 간단하게 기록합니다. |
HTMLLayout | 로그 정보를 HTML 형식으로 기록합니다. |
PatternLayout | 로그 정보를 사용자 정의 패턴에 따라 기록합니다. • %c: 카테고리 출력 • %p: 로깅 레벨 출력 • %m: 로그 내용 • %d: 로깅 이벤트가 발생한 시간, yyyy-MM-dd, HH:mm:ss 등 시간 형식 사용 • %t: 로깅 이벤트를 발생한 스레드 이름 • %n: 개행 • %C: 클래스 이름 • %F: 로깅이 발생한 파일 이름 • %I: 로깅이 발생한 호출자 정보 • %L: 로깅이 발생한 코드 라인 수 • %M: 로깅이 발생한 메서드 이름 • %r: 애플리케이션 시작 이후부터 로깅이 발생한 시점의 시간 • %x: 로깅이 발생한 스레드와 관련된 NDC(Nested Diagnostic Context) • %X: 로깅이 발생한 스레드와 관련된 MDC(Mapped Diagnostic Context) |
SimpleLayout | 로그 정보를 ‘레벨-정보’ 형식으로 간단하게 기록합니다. |
XMLLayout | 로그 정보를 XML 형식으로 기록합니다. |
로깅 정보를 포멧팅하는 것이 LAYOUT이다.
'백 > Spring, Spring Boot' 카테고리의 다른 글
[Spring] 유효성 검사, 에러 메시지 보여주기 예제 코드 도서 등록 시 에러 메시지 (0) | 2023.07.12 |
---|---|
[Spring] 다국어 처리 properties파일 리소스 파일, 다양한 언어 처리 하기 (0) | 2023.07.06 |
[Spring] 뷰 리다이렉션 : 현제 페이지에서 다른 페이지로 이동하기 jsp redirect방식과 forward방식 (0) | 2023.07.04 |
[Srping] 스프링 폼 태그 (form tag) jsp파일에 값 입력하기 input (0) | 2023.07.04 |
[Spring] 경로 변수(path variables) @PathVariable, @RequestParam (0) | 2023.07.04 |