slf4j && logback 정리

라코마코·2020년 5월 9일
0

스프링공부

목록 보기
2/2

logback

log4j를 개발한 개발자들이 log4j의 단점을 개선하기 위해서 만든

자바 로깅 라이브러리. Apache 라이센스를 가지고 있다.

slf4j

자바의 로깅 관련 라이브러리들을 추상화 시킨 interface

스프링에선

스프링에선 commons-logging을 사용하고있다.

commons-logging을 사용하고 싶지 않고 logback을 사용하고 싶다면

pom.xml에서 commons-logging dependency를 삭제하고

logback을 설치하고 로깅 라이브러리를 추상화 시킨 slf4j를 dependency에 추가한다.

로깅은 slf4j 인터페이스를 통해서 수행한다.

log4j의 log level

  1. trace : debug보다 아래단계 , 덜 중요하지만 변수를 쫓는 정도의 로그를 찍는데 사용함
  2. debug : debug를 위해서 사용하는 logging level
  3. info : 진행정보, 상태 정보를 찍는데 사용함
  4. warn : 잠재적 오류, 경고성 정보를 로깅하는데 사용함
  5. error : 오류가 발생했을 경우 사용함

log4j 설정

필요한것

  1. slf4j-api 로깅 인터페이스
  2. logback-classic 우리가 사용하는 로그백 라이브러리
  3. jcl-over-slf4j 스프링의 commons-logging을 대체하는 인터페이스

example

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
      <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>
      <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>
      <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>
</configuration>
  1. logback의 설정은 항상 configuration 내부에서 진행되어야 한다.

appender

로그 출력 방법, 로그 저장 방법을 설정하는 태그.
ConsoleAdapter 는 컴퓨터 콘솔에 로그를 출력하고, 출력하는데에 관한 포맷들을 설정할때 사용한다.

encoder, pattern에서 포맷을 지정한다.

RollingFileAppender는 파일을 돌려가서면 로그를 저장하고 관리하는데 사용된다. , 로그의 양이 너무 많아지면 하나의 파일에서 관리하기 힘들기 때문에 하루 단위로 파일을 새로 생성하여 로그를 기록하고 관리하는데 주로 사용된다.

file 태그에 로그 파일의 위치를 지정하고,

rollingPolicy는 rolling 규칙을 적는데 사용된다. TimeBasedRollingPolicy는 일정 시간마다 새로운 파일을 만들어 로그를 기록하는데 사용되는 Policy이다.

포맷 형식인 ConsoleAdpater와 마찬가지로

encoder , pattern에 기록한다.

logger

name으로 지정된 패키지에서, level로 지정된 로그 레벨 이상의 로그가 발생했을때 로깅할 것인지를 정하는 엘리먼트

<logger name="org.springframework" level="info"/>

이 경우엔 , org.springframework 패키지에서 info 이상의 로그만 로깅하라는 의미가 된다.

root

모든 로그를 만들어둔 console, file appender를 적용하라는 의미가 된다.

Usage

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class babo{
  private Logger logger = LoggerFactory.getLogger(this.getClass());
  public void usage(){
    logger.debug("{} babo {} mung","zzz","xxx");
    logger.warn("{} basda {} mung","zZz");
    
  }
}

logging될 객체 내부에서

slf4j Logger 객체를

LoggerFactory를 통해서 생성한다.

LoggerFactory에 logging될 객체의 클래스를 주입시켜줘야한다는점 잊지 말자.

0개의 댓글