[Logging] Logback

DaeHoon·2023년 9월 2일

Logback 이란?

  • Log4J를 기반으로 개발된 Logging 라이브러리
  • log4j에 비해 약 10배 정도 빠른 퍼포먼스, 메모리 효율성 증대

Logback 특징

  • 로그에 특정 레벨을 설정할 수 있음.
  • 실운영과 테스트 서버에 각각 다른 출력 레벨을 설정하여 로그를 확인할 수 있음.
  • 출력 방식에 대해 설정 가능
  • 설정 파일을 일정 시간마다 스캔하여 어플리케이션 중단 없이 설정 변경 가능
  • 별도의 프로그램 없이 자체적으로 로그 압축 지원
  • 로그의 보관 기간 설정 가능

구조

Appender

  • Log의 형태 및 어디에 출력할지 설정하기 위한 영역
<appender name="JSON_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <File>${LOG_PATH}/${FILE_NAME}.log</File>
  <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <FileNamePattern>${LOG_PATH}/${FILE_NAME}_%d{yyyy-mm-dd}.%i.log</FileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
      <maxFileSize>5MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <maxHistory>3</maxHistory>
  </rollingPolicy>
  <filter class="CustomFilter">
    <levels>INFO|TRACE|DEBUG|WARN</levels>
  </filter>
</appender>

Append 형식

  • ConsoleAppender: 콘솔에 로그를 출력
  • FileAppender: 파일에 로그를 저장
  • RollingFileAppender: 여러 개의 파일을 순회하여 로그를 저장
  • SMTPAppender: 로그를 메일로 보냄
  • DBAppender: 데이터베이스에 로그를 저장

Encoder

  • Appender 내에 포함되는 항목이며, pattern을 사용하여 원하는 형식으로 로그를 표현할 수 있음.
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
  • 기본 값은 LogstashEncoder

Root

  • 설정한 Appender를 참조하여 로그의 레벨을 설정할 수 있다.
  • 전역 설정이며, 지역 설정을 하기 위해서는 logger를 사용
    <root level="info" additivity="false">
      <appender-ref ref="JSON_FILE"/>
    </root>

Level

TRACE < DEBUG < INFO < WARN < ERROR

  • ERROR: 로직 수행 중 오류가 발생한 경우, 시스템적으로 심각한 문제가 발생하여 작동이 불가한 경우 (주로 500번 대 Http Status)
  • WARN: 시스템 에러의 원인이 될 수 있는 경고 레벨, 처리 가능한 사항 (주로 400번 대 Http Status)
  • INFO: 상태변경 같은 정보성 메시지
  • DEBUG: 어플리케이션의 디버깅을 위한 메시지 레벨
  • TRACE: DEBUG 레벨보다 더 디테일한 메시지를 표현하기 위한 레벨

로그 레벨을 INFO로 설정하면 INFO보다 밑에 있는 TRACE, DEBUG 레벨의 로그는 출력되지 않는다.

profile
평범한 백엔드 개발자

0개의 댓글