프로젝트 정리/Naver Boost Course

slf4j 설정하기

핵심 개념

  • SLF4J
  • logback.xml
  • Appender
  • Logger

SLF4J란?

  • logging 관련 라이브러리는 다양하다.
  • 이러한 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 SLF4J는 제공한다.
  • SLF4J는 로깅 Facade이다.
  • 로깅에 대한 추상 레이어를 제공하는 것이고 interface의 모음이다.

SLF4J를 이용해 로깅 라이브러리 사용하기

로그 라이브러리를 변경해도 applicaiton 코드를 변경하지 않아도 된다.

 

maven에 SLF4J와 logback의존성 추가하기

maven에 SLF4J와 logback의존성 추가하기

  • 참고로 logback-classic 1.2.3은 이미 slf4j-api 1.7.25에 대한 의존성을 가지고 있기 때문에 slf-j-api를 추가할 필요는 없다.
  • Spring은 기본적으로 아파치 재단의 commons-logging을 사용한다.
  • logback라이브러리를 사용하려면 제거를 해야한다.
  • Spring라이브러리에서 commons-logging을 제거하면, Spring을 사용할 때 commons-logging라이브러리를 찾으면서 오류가 발생한다.
  • 이러한 오류를 제거하기 위해서 jcl-over-slf4j를 추가한다.

logback 설정

logback 설정

  • logback.xml
  • Appender 설정
  • logger 설정
  • root 설정

 

Appender

  • ConsoleAppender : 콘솔에 로그를 어떤 포맷으로 출력할지를 설정할 때 사용한다.
  • FileAppender : 파일에 로그를 어떤 포맷으로 출력할지를 설정한다.
  • RollingFileAppender : 로그의 양이 많아지면, 하나의 파일로 관리하기 어려워지는 경우가 생긴다.
    이런 문제를 해결하기 위해 하루 단위로 로그를 관리하고자 할 경우 사용된다.

ConsoleAppender 설정

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>
    
    %logger-> logger이름 축약
    {36} 최대 자리수
    %-5level 로그 레벨을 5의 고정폭 값으로 출력
    %msg message의 alias -> 출력 메시지
    %n -> 줄바꿈

RollingFileAppender 설정

 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>access-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>

Log Level

  1. trace : debug보다 세분화된 정보
  2. debug : 디버깅하는데 유용한 세분화된 정보
  3. info : 진행상황 같은 일반 정보
  4. warn : 오류는 아니지만 잠재적인 오류 원인이 될 수 있는 경고성 정보
  5. error : 요청을 처리하는 중 문제가 발생한 오류 정보

로그 레벨 설정과 root 설정

<logger name="org.springframework" level="info"/>
    <logger name="kr.or.connect" level="debug"/>
    <root level="debug">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

 

Logger 객체 선언

  • 로그를 남기고자 하는 클래스에 로거 객체를 필드로 선언한다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.......
private Logger logger = LoggerFactory.getLogger(this.getClass());

로그 출력 메소드

  • 문자열 결합을 위해 '+'연산자를 사용하지 않는다.
  • 로그로 남길 변수의 수만큼 {} 를 이용한다.
  • 로그의 수준에 따라 debug(), info(), warn(), error()메소드를 이용한다.

예시

logger.trace("{} {} 출력", "값1", "값2");
logger.debug("{} {} 출력", "값1", "값2");
logger.info("{} {} 출력", "값1", "값2");
logger.warn("{} {} 출력", "값1", "값2");
logger.error("{} {} 출력", "값1", "값2");

'프로젝트 정리 > Naver Boost Course' 카테고리의 다른 글

파일업로드 컨셉설명  (0) 2021.04.18
slf4j를 이용한 로그남기기  (0) 2021.04.15
로깅이란  (0) 2021.04.15
file upload의 확장자검사 및 썸네일노출  (0) 2021.03.30
file upload방법의 이해  (0) 2021.03.30