alclssha 2023. 1. 10. 01:00

로깅

어플리케이션을 운영하던 도중에 장애가 발생, 잘못된 접근, 예상치 못한 작동 등과 같이 문제가 발생
-> 문제의 원인을 파악해야 함
-> 날짜, 시간, 서비스, 로직 등에 대한 정보가 필요
-> 이런 정보를 얻기 위해서 Exception이 발생하거나 중요한 기능들이 실행되는 부분에서는 로그(log)를 남기는 것

 

 

slf4j

  • Simple Logging Facade for java의 약자
  • java.util.logging, logback, log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화 역할을 하는 라이브러리
  • 로깅을 간단하게 사용할 수 있도록 하는 Facade
  • 로깅 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법
  • 추상 로깅 프레임워크이기에 단독 사용은 하지 않음
  • compile시 하나의 로깅 프레임워크와 바인딩
  • *) Spring Boot는 slf4j와 logback을 기본으로 사용

 

 

 

slf4j 사용이유

  • 구현체의 종류에 상관없이 일관된 로깅 코드 제공
  • Java로깅 프레임워크간의 쉬운 전환
  • System.out.println()을 사용하지 않고 손 쉽게 디버깅 가능

 

 

slf4j 동작과정

  • 개발할 때, slf4j API를 사용하여 로깅 코드를 작성
  • 배포할 때, 바인딩된 Logging Framework가 실제 로깅 코드를 수행

 

 

slf4j Bridging

  • 프로젝트에서 일부 구성 요소는 SLF4J가 아닌 다른 로깅(logging) API에 의존하는 경우가 있음
  • 다른 로깅 API로의 Logger 호출을 slf4j 인터페이스로 연결하여 slf4j가 대신 처리할 수 있도록 하는 라이브러리
    • 일종의 어댑터 역할

 

 

slf4j API

  • Logger, LoggerFactory등의 classs 및 interface등을 사용하여 일관된 로깅 코드를 사용할 수 있는 환경을 구성가능
  • slf4j-api만을 이용해서는  로그 기능을 사용할 수 없고, slf4j의 다른 모듈인 Binding 기능을 이용하여 하나의 Java 로깅 프레임워크를 구현체로써 사용해야 함
  • 로그 레벨에 따른 출력 메서드들을 제공
    • TRACE: 추적 레벨은 DEBUG보다 좀 더 상세한 정보를 표시
    • DEBUG: 프로그램을 디버깅하기 위한 정보를 표시
    • INFO: 상태 변경과 같은 정보성 로그를 표시
    • WARN: 처리 가능한 문제, 시스템 에러의 원인이 될 수 있는 경고성 메시지를 표시
    • ERROR: 요청을 처리하는 중 오류가 발생한 경우를 표시
    • TRACE < DEBUG < INFO < WARN < ERROR 레벨에 따라서 로그 메세지가 달라짐

 

 

slf4j Binding(.jar)

  • slf4j의 인터페이스의 로깅 구현체와 로깅 프레임워크사이의 연결역할을 하는 모듈
  • logback, log4j2 등등 slf4j와 Java로깅 프레임워크 사이에서 사용할 수 있음
  • 구현체로 선택되는 Java 로깅 프레임워크는 오직 하나 존재해야 함