Log Level Management

Better late than never·2022년 9월 26일
0

Log Level 관리 방법

LogBack

  • 자바오픈소스 로깅 프레임워크,  SLF4J의 구현체
  • 스프링 부트의 기본으로 설정되어 있어서 사용시별도로 라이브러리를 추가하지 않아도 된다.
  • log4j, log4j2등과 성능을 비교했을 때에도 logback이 더 훌륭한 성능을 보여준다.
  • spring-boot-starter-web 안에 spring-boot-starter-logging에 구현체가 있다.
  • Logback을 이용하여 로깅을 수행하기 위해서 필요한 주요 설정요소로는 Logger, Appender, Encoder의 3가지가 있으며 각각은 다음과 같은 역할을 수행한다.

Spring Boot logback 설정

CASE1) 스프링, 일반 자바 프로그램 경우

logback.xml파일을 resources 디렉토리에 만들어서 참조한다.

CASE2) 스프링부트

logback-spring.xml 파일을 resources 디렉토리에 만들어서 참조한다.

1) classpath(resources디렉토리 밑)에 logback-spring.xml파일이 있으면 설정파일을 읽어간다.

2) logback-spring.xml파일이 없다면 .yml(.properties)파일의 설정을 읽어간다.

3) logback-spring.xml파일과 .yml(.properties)파일이 동시에 있으면 .yml(.properties) 설정 파일을 적용 후 xml파일이 적용된다. 

위에서 얘기한 대로 스프링 부트 에서는 logback-spring.xml을 사용해서 Spring이 logback을 구동할 수 있도록 지원해 주며 이를 이용하여 profile, 즉 배포 환경에 따른(spring.profiles.active을 활용하여) application.xml에 설정된 properties를 읽어올 수 있다.

ex) spring.profiles.active=locallogback-local.properties => console-logginglogback-dev.properties => file-logginglogback-prod.properties => file-logging,remote-logging

▶ TRACE < DEBUG < INFO < WARN < ERROR

1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시한다.

2) WARN  : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타낸다.

3) INFO  : 상태변경과 같은 정보성 로그를 표시한다.

4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시한다. 

5) TRACE : 추적 레벨은 Debug보다 훨씬 상세한 정보를 나타낸다.

  • 로그에 설정할 수 있는 레벨은 총 5가지다.

  • 위의 순서대로 높은 레벨을 가진다. 출력 레벨의 설정에 따라 설정 레벨 이상의 로그를 출력 한다.

  • 예를 들어 로깅 레벨 설정을 "INFO"로 하였을 경우 "TRACE", "DEBUG" 레벨은 무시한다.

※ 스프링 부트에서는 간단히 application.properties에 값만 세팅해도 설정 가능 하다.

ex1) 루트 레벨(전체 레벨) 전체 로깅 레벨 지정

logging.level.root=info

ex2) 패키지별로 로깅 레벨 지정

  • 다음 방법으로 상위 패키지의 디폴트 레벨을 설정하고, 하위 패키지들에 대한 각각의 로깅 레벨을 별도로 설정할 수 있다.
logging.level.com.god.bo.test=info
logging.level.com.god.bo.test.controller=debug

0개의 댓글