티스토리 뷰
로깅 개념
로그 레벨
- TRACE < DEBUG < INFO < WARN < ERROR < FATAL
- INFO 레벨로 설정하면 그 위의 INFO, WARN, ERROR, FATAL 로그가 출력된다.
- FATAL: 아주 심각한 에러가 발생한 상태. 시스템적으로 심각한 문제가 발생하여 애플리케이션 작동이 불가능. 프로그램이 종료되는 경우가 많음.
- ERROR: 의도하지 않은 에러가 발생한 경우. 프로그램이 종료되진 않음. 프로그램에서 개발자가 의도하지 않은 예외를 나타낼 때 사용.
- WARN: 에러가 될 수 있는 잠재적 가능성이 있는 경우.
- INFO: 명확한 의도가 있는 에러. 요구사항에 따라 시스템 동작을 보여줄 때 사용. 개발자가 의도한 예외.
- DEBUG: INFO 레벨보다 더 자세함.
- TRACE: DEBUG 레벨보다 더 자세함.
- 기본 로그 레벨은 DEBUG
SLF4J
- 단독으로 사용 불가능
- 인터페이스
- 최종 사용자가 배포시 원하는 구현체를 선택
Logback
- SLF4J의 구현체
- Log4J토대로 만든 프레임워크
- logback-core: appender, layout 인터페이스가 이 모듈에 속함
- logback-classic: logback-core 를 가지며 SLF4J API를 구현함, Logger 클래스가 속함.
- logback-access: Servlet Container 와 통합되어 HTTP 엑세스에 대한 로깅 기능을 제공. 웹 애플리케이션 레벨이 아닌 컨테이너 레벨에서 설치되어야 함.
- logback.xml 로 설정파일을 관리한다. 커스터마이징 가능하다.
Logback 설정요소
- Logger: 어떻게 기록할지. 출력 레벨 조정.
- Appender: 어디에다 기록할지.
- Console Appender: 로그를 콘솔에 출력
- FileAppender: 로그를 지정 파일에 기록
- RollingFileAppender: FileAppender 를 상속. 패턴에 따라 로그 파일을 관리 가능.
- Layout: 어떻게 출력할지. 로그메세지를 변환하는 역할
팀 프로젝트에 적용된 로깅 정책 확인하기
build.gradle
- SLF4J는 스프링 부트의 기본으로 설정되어 있어 별도의 라이브러리를 추가하지 않아도 됨
spring-boot-starter-web
안에spring-boot-starter-logging
구현체가 있음.
dependencies {
// ...
implementation 'org.springframework.boot:spring-boot-starter-web'
// http 로그를 편리하게 사용하기 위한 라이브러리
implementation 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1'
// logging to cloudwatch
implementation("ca.pjer:logback-awslogs-appender:1.4.0")
// logback 에서 condition 사용을 위한 라이브러리
implementation("org.codehaus.janino:janino:3.0.7")
}
application.properties
logging.level.root=INFO
logback.xml
src/main/resources/
하위에 위치.- spring boot 에서는 logback.xml 로 설정하면 스프링 부트에 대한 설정 전에 로그백 설정이 되므로 제어할 수 없다.
logback-spring.xml
을 사용하던지 각 프로퍼티 파일에서 logback 설정파일을 관리하여야 한다.- 현재 logback.xml이 있는 이유는 aws cloudwatch 설정을 하면서 옮긴 듯 싶다.
logback-access.xml
- http 요청, 응답과 관련된 설정
logback-spring.xml
- 스프링 로깅과 관련된 설정
참고
- gpu-is-mine tech log
- 검프의 로깅 테코톡
'우아한테크코스 > 레벨4, 레벨5' 카테고리의 다른 글
[팀 프로젝트] private configuration 설정파일 정보 문서화 (0) | 2021.09.27 |
---|---|
[팀 프로젝트] GM 로그 관리를 위한 ELK Stack 설정 방법 문서화 (0) | 2021.09.27 |
[http 서버 구현미션] HTTP/1.1 프로토콜 (0) | 2021.09.24 |
[http 서버 구현미션] File, inputStream, outputStream (0) | 2021.09.21 |
[http 서버 구현미션] Custom @GetMapping Annotation 만들기 (1) | 2021.08.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드스쿼드
- 운영체제
- 회고
- 알고리즘
- 글쓰기미션
- JS
- DB
- OS
- 객체지향
- 우아한테크코스
- 학습로그
- python
- 인증
- Spring
- TIL
- javascript
- 카카오
- 개발공부일지
- TCP/IP
- 내부코드
- 모의면접준비
- 우테코수업
- CS
- Transaction
- React
- 월간회고
- 마스터즈코스
- JPA
- java
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함