본문 바로가기
혼자 공부하는 것들/Spring

Spring Boot gradle 환경에서 logback을 적용해보자. 🔥

by applepick 2022. 1. 27.
반응형

팀 프로젝트 진행 중에 로깅 관련돼서 도입하려고 했습니다. 고민했던 것이 log4j와 logback이었습니다. 결정적으로 logback을 선택했던 이유는 기본적으로 스프링 부트는  SLF4 J(Simple Logging Facade for Java)를 이용하여 로그를 관리합니다.

아래는 log4j와 logback의 밴치마킹 비교글입니다.

https://www.loggly.com/blog/benchmarking-java-logging-frameworks/

 

Benchmarking Java logging frameworks | Loggly

Two years ago, Loggly ran a series of performance tests on some of the most popular Java logging frameworks at the time. These tests were designed to show how quickly each framework processed different kinds of log events, as well as the…

www.loggly.com


 gradle의 Dependencies를 확인해보면 SLF4J가 있는 것을 확인해볼 수 있습니다. SLF4J는 퍼사드 패턴을 사용합니다. 간략하게 정리하면 퍼사드 패턴은 간략화된 인터페이스를 제공하는 객체입니다. 프레임워크와의 의존성을 낮게 유지시키면서 코드를  쉽게 교체할 수 있는 장점을 가지고있습니다.

 

스프링 부트는 SLF4J의 퍼사드 패턴을 이용해 logback을 사용합니다.

 

logback 설정

프로젝트에 /resources 위치에 logback-spring.xml 파일을 생성합니다.  

<configuration>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console" />
    </root>

    <!-- Logger -->
    <logger name="com.*" level="DEBUG" appender-ref="console" />
    <logger name="jdbc.sqlonly" level="INFO" appender-ref="console" />
    <logger name="jdbc.resultsettable" level="INFO" appender-ref="console" />

</configuration>

위와 같은 내용으로 작성해줍니다. appender는 로깅의 양식을 설정해주는 곳입니다. 나머지 logger와 root level은 appender로 양식을 정해준 것들을 가져와 양식을 설정해줍니다.

 

 

application.properties 파일 설정을 보면

spring.datasource.hikari.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.hikari.jdbc-url= 
spring.datasource.url=
spring.datasource.hikari.username=
spring.datasource.hikari.password=
spring.datasource.hikari.connection-test-query=SELECT SYSDATE FROM DUAL
server.port=8081

# MyBatis
# .xml 위치 지정
mybatis.mapper-locations: mybatis/**/**/*.xml

# model 프로퍼티 camel case 설정
mybatis.configuration.map-underscore-to-camel-case=true

# 패키지 명을 생략할 수 있도록 alias 설정
mybatis.type-aliases-package=

# mapper 로그레벨 설정
logging.level.com.azurealstn.codespringweb.mapper=TRACE

#전체 로그 레벨 설정(기본 info)
logging.level.root=info

 

이렇게 설정해주었습니다. 프로젝트를 시작하면

위와 같이 최종적으로 logback-spring.xml에서 설정했던 양식 그대로 로깅이 되는 것을 확인할 수 있습니다. 또한, 객체와 sql의 쿼리 문과 parmeters값을 로그로 확인해볼 수 있습니다.

 

반응형

댓글