본문 바로가기
Development/Spring

Spring Boot 로그 설정 (Logback)

by 메정 2021. 9. 23.

Logging이 필요한 이유

운영중인 앱에서 문제가 발생했을 때 문제의 원인을 파악하기 위해선 정보가 필요.

이를 위해 Exception이 발생했거나 중요 기능이 실행되는 부분에 적절한 로그를 남겨 이후에 확인 가능하도록 해야 함

이런 로그를 생성해주는게 Logging

Logging 이란?

정보를 제공하는 일련의 기록인 로그(Log)를 생성하도록 시스템을 작성하는 활동

로그를 출력할 때 System.out.println()를 이용하면 가장 쉽게 출력할 수 있긴 하지만, 양이나 수준(Level)을 조절할 수 없고, 파일에 저장하기 불편한 단점이 존재.

성능면에서도 좋지 않음. 자주 사용 시 앱의 속도가 느려짐! 그래서 실제 로깅 시 따로 라이브러리를 이용하는데 다양함!

Logback 이란?

  • Java에서 Log를 기록하기 위한 Open-Source Framework. (SLF4J의 구현체)

    SLF4J?

    다양한 logging과 관련된 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 제공

    로깅 Facade, 로깅에 대한 추상 레이어를 제공하며 interface의 모음!

  • Spring Boot 에서는 default로 설정되어 있어서 **별도로 라이브러리를 추가하지 않아도 됨!!!!!!
  • spring-boot-start-web안에 spring-boot-starter-logging에 구현체가 존재함
  • logback을 이용하여 logging하기 위해서 필요한 주요 설정 요소는 Logger, Appender, Encoder가 있음

Spring Boot logback 설정하는 방법

  1. application.properties에 설정
  2. resources/logback-spring.xml에 설정
  3. resources/logback.xml에 설정

Spring boot에서는 간단하게 1의 방법으로 log 설정이 가능하지만, 상세한 설정을 위해선 xml에 따로 해주는게 좋음.

xml은 복잡하기 때문에, 파일 경로나 파일명 등은 수정하기 쉽도록 별도의 properties파일로 분리해두기도 함.

log.config.path=c:/logs/~
log.config.filename=text.log

Log level 순서 및 사용 방법

출력 레벨의 설정에 따라 설정 레벨 이상의 로그 표시

TRACE < DEBUG < INFO < WARN < ERROR

ex. Level을 INFO로 할 경우, INFO, WARN, ERROR를 보여줌

  • TRACE : 요청을 처리하는 중 오류가 발생한 경우 표시
  • DEBUG : 프로그램을 디버깅하기 위한 정보 표시
  • INFO : 상태 변경과 같은 정보성 로그 표시
  • WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메세지 표시
  • ERROR : 요청 처리 중 오류가 발생한 경우 표시

참고사이트

댓글