ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • slf4j란?
    프로그래밍 기초 공부 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 로깅 프레임워크는 오직 하나 존재해야 함

     

    '프로그래밍 기초 공부' 카테고리의 다른 글

    Race Conditions, Deadlocks, Process Starvation  (0) 2023.01.16
    그래프와 트리  (0) 2023.01.10
    정규화란?  (0) 2023.01.03
    JUnit이란?  (0) 2023.01.03
    트랜잭션이란?  (0) 2022.12.31
Designed by Tistory.