IT'S DO
article thumbnail
728x90

logback-spring.xml 적용하기

resource에

logback-spring.xml과 log4jdbc.log4j2.properties만들어줌

 

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">

<!-- Appenders -->
<!-- 전달받은 로그를 어디에 출력할지 결정. 콘솔 출력, 파일 저장, 데이터베이스 저장 등 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder> <!-- encoder : appender에 포함되어 출력할 로그의 형식을 지정 -->
        <Pattern>%d %5p [%c] %m%n</Pattern>
    </encoder>
</appender>

<appender name="console-infolog" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <Pattern>%d %5p %m%n</Pattern>
    </encoder>
</appender>

<!-- Logger -->
<!-- 로그를 출력하는 요소로, level 속성을 통해 출력할 로그 레벨을 조절하여 appender에 전달. 첫 번째 logger에서 com.example.dandy.history는 src/main/java/ 디렉터리 안의 자바 패키지 경로를 의미함.  -->
<logger name="com.example.dandy.history" level="DEBUG" appender-ref="console" />
<logger name="jdbc.sqlonly" level="DEBUG" appender-ref="console-infolog" />
<logger name="jdbc.resultsettable" level="DEBUG" appender-ref="console-infolog" />

<!-- Root Logger -->
<root level="off">
    <appender-ref ref="console" />
</root>
</configuration>

추가

 

# 설명

xml에 선언한 내용에 대해 간략히 알아보도록 하겠습니다.

태그 설명
appender 전달받은 로그를 어디에 출력할지 결정합니다. (콘솔 출력, 파일 저장, 데이터베이스 저장 등)
encoder appender에 포함되어 출력할 로그의 형식을 지정합니다.
logger 로그를 출력하는 요소로, level 속성을 통해

출력할 로그의 레벨을 조절하여 appender에 전달합니다.

첫 번째 logger에서 com.board는 src/main/java 디렉터리 안의

자바 패키지 경로를 의미합니다.

 

이번에는 로그의 레벨에 대해 알아보도록 하겠습니다.

레벨 설명
fatal 아주 심각한 에러가 발생한 상태를 나타냅니다.
error 요청을 처리하던 중 문제가 발생한 상태를 나타냅니다.
warn 프로그램 실행에는 문제가 없지만,

나중에 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타냅니다.
info 어떠한 상태 변경과 같은 정보성 메시지를 나타냅니다.
debug 개발 시에 디버그 용도로 사용하는 메시지입니다.
trace 디버그 레벨이 너무 광범위한 것을 해결하기 위해 좀 더 상세한 이벤트를 나타냅니다.

 

마지막으로 로그의 타입에 대해 알아보도록 하겠습니다.

타입 설명
sqlonly SQL을 로그로 남기며, Prepared Statement와 관련된 파라미터는

자동으로 변경되어 SQL을 출력합니다.
sqltiming SQL과 SQL 실행 시간(milliseconds 단위)을 출력합니다.
audit ResultSet을 제외한 모든 JDBC 호출 정보를 출력합니다.

JDBC 관련 문제를 추적하는 경우를 제외하고는 사용이 권장되지 않습니다.
resultset ResultSet을 포함한 모든 JDBC 호출 정보를 출력합니다.
resultsettable SQL 조회 결과를 테이블 형태로 출력합니다.
connection Connection의 연결과 종료에 관련된 로그를 출력합니다.

커넥션 누수 문제 해결에 도움이 됩니다.

 

 

 log4jdbc.log4j2.properties 안에

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

 

추가

 

build.gradle에

implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' /* Log4JDBC */

추가

 

application.yml에

spring:
  datasource:
    driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    url: jdbc:jdbc:log4jdbc:mariadb://127.0.0.1:3306/spring?characterEncoding=UTF-8
    username: test
    password: 

 

 

적용 후 

 

 

결과가 쿼리로 다 보이게 해줘서 개발할때 좋음.

 

 

출처

https://congsong.tistory.com/23

profile

IT'S DO

@멋진놈

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!