우아한테크코스/레벨4, 레벨5
[팀 프로젝트] gpu-is-mine 적용된 로깅 정책 파악하기
nauni
2021. 9. 25. 12:04
로깅 개념
로그 레벨
- 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
- 검프의 로깅 테코톡