로그 레벨이란?
로그 레벨은 애플리케이션에서 발생하는 로그의 중요도를 나타내는 지표이다. 개발 환경 별로 로그 레벨을 관리하는 것은 매우 중요하다. 개발 시에만 필요한 로그를 넣어뒀는데, 이것이 프로덕션에서도 보여진다면 불필요한 로그가 보여지는 것이기 때문에 불필요한 데이터가 디스크를 차지하거나 할 수 있다. 따라서 개발 환경 별로 서로 다른 로그 레벨의 설정이 필요하다. 이것을 어떻게 설정하는지 알기 위해 먼저 Spring 에는 어떤 로그 레벨이 있는지 알아보자.
Spring의 로그 레벨
Spring 에서는 다음과 같은 6단계의 로그 레벨을 사용한다.
- TRACE: 가장 상세한 정보를 제공하는 레벨
- DEBUG: 개발 시 디버깅 목적으로 사용되는 레벨
- INFO: 일반적인 정보를 나타내는 레벨
- WARN: 잠재적인 문제를 나타내는 경고 레벨
- ERROR: 오류 상황을 나타내는 레벨
- FATAL: 심각한 오류를 나타내는 레벨
로그 레벨을 설정하면 해당 레벨 이상의 모든 로그가 출력된다. 예를 들어, INFO 레벨로 설정하면 INFO, WARN, ERROR, FATAL 레벨의 로그가 모두 출력되며, ERROR 레벨로 설정하면 ERROR, FATAL 레벨의 로그가 출력된다.
Spring Boot의 application.properties 사용해 로그 레벨 설정하기
Spring Boot의 application.properties를 사용해 로그 레벨을 설정하기 위한 방법은 간단하다. application.properties 파일에 다음과 같은 설정을 추가하면 된다.
## Spring Boot의 로그 레벨을 debug로 설정
logging.level.org.springframework=debug
그러면 org.springframework 패키지에 대한 로그레벨이 DEBUG로 설정되며, 이에 따라 DEBUG, INFO, WARN, ERROR, FATAL 로그가 출력되게 된다.
로그 레벨이 제대로 설정됐는지 확인하기 위해 Spring 애플리케이션을 실행해보면 다음과 같이 DEBUG 레벨의 로그가 출력되는 것을 볼 수 있다.
그러면 이번에는 로그 레벨을 INFO로 바꿔보자.
## Spring Boot의 로그 레벨을 info로 설정
logging.level.org.springframework=info
그러면 그러면 org.springframework 패키지에 대한 로그레벨이 INFO로 설정되며, 이에 따라 INFO, WARN, ERROR, FATAL 로그가 출력되게 된다.
이를 확인하기 위해 Spring 애플리케이션을 재시작해보면, 더이상 DEBUG 로그가 나오지 않는 것을 볼 수 있다.
특정 패키지의 로그 레벨 설정하기
위에서는 여기에서는 logging.level.org.springframework에 대한 설정값을 추가해 로그 레벨을 설정했다. 여기서 logging.level가 로그 레벨을 설정하겠다고 하는 뜻이며 org.springframework는 스프링 프레임워크 패키지를 뜻한다. 따라서 스프링 프레임웍 말고도 전체에 대한 기본 로그 레벨을 설정(루트 로그 레벨 설정)하거나 특정 패키지에 대한 로그 레벨 설정도 가능하다. 이어서 이 방법에 대해 알아보자.
루트 로그 레벨 설정하기
루트 로그 레벨을 설정하기 위해서는 logging.level.root 에 대한 로그 레벨을 설정해주면 된다.
## 루트 로그 레벨을 debug로 설정
logging.level.root=debug
그러면 스프링 프레임웍이 아닌 다른 패키지의 로그 레벨도 DEBUG로 설정돼 출력되게 된다.
특정 패키지의 로그 레벨 설정하기
특정 패키지의 로그 레벨을 설정하기 위해서는 logging.level.[패키지명]에 대한 로그 레벨을 설정해주면 된다. 예를 들어
com.kotlinworld.spring.logging 패키지에 대한 로그 레벨을 debug로 설정하고 싶다면, 다음과 같이 적어주면 된다.
## com.kotlinworld.spring.logging 패키지의 로그 레벨을 debug로 설정
logging.level.com.kotlinworld.spring.logging=debug
이제 이 설정이 잘동작하는지 확인하기 위해 com.kotlinworld.spring.logging 패키지에 DEBUG 레벨로 "Hello, Kotlin World" 로그를 출력되게 만들자.
package com.kotlinworld.spring.logging
...
fun main(args: Array<String>) {
runApplication<LoggingApplication>(*args)
// 로그 추가
val logger = LoggerFactory.getLogger(LoggingApplication::class.java)
logger.debug("Hello, Kotlin World!")
}
그런 후 애플리케이션을 실행하면 다음과 같이 DEBUG 레벨의 로그가 나오는 것을 확인할 수 있다.
전체 코드: GitHub
이 프로젝트가 도움이 되셨다면 저장소에 Star⭐️를 눌러주세요! Stargazers는 다음 페이지에서 확인할 수 있습니다.