본문 바로가기

Programming/Spring

[Spring Boot] Oracle에 log4jdbc 적용

반응형

개발환경

  • Spring Boot 2.5.6
  • Gradle
  • Java 11
  • Oracle 11g

 

build.gradle 의존성 추가

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

 

application.properties 오라클 설정 수정

class-name과 jdbc-url을 수정한다.

# 기본적으로 이렇게 설정되어 있을 것이다.
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.hikari.jdbc-url=jdbc:oracle:thin:@localhost:1521:xe

# 이렇게 설정을 변경한다.
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.hikari.jdbc-url=jdbc:log4jdbc:oracle:thin:@localhost:1521:xe

 

logback 설정 파일을 생성한다.(log가 어떻게 출력될 것인가에 대한 설정 파일)

log4j2.xml이 기본(Default) 이름인 것 같다.

만약 본인이 원하는 이름이 있다면 아래와 같이 application.properties에서 logging.config로 경로 및 파일 이름을 지정하면 된다.

logging.config= classpath:logback/logback-default.xml

 

log4j2.xml 파일을 작성한다.

작성 방법은 저마다 다양하다. 필요에 따라 추가 하거나 덜어내거나 하면 된다.

아래 코드는 모 블로그에서 가져왔는데, 어디서 가져왔는지 기억이 나지 않는다. 조속한 시일 내에 출처를 남기겠습니다.

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

    <!--로그 파일 저장 위치-->
    <property name="LOGS_PATH" value="./logs"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>
    <appender name="DAILY_ROLLING_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS_PATH}/logback.log</file>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOGS_PATH}/logback.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 100MB -->
                <maxFileSize>5MB</maxFileSize>
                <!-- kb, mb, gb -->
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>
    
    <logger name="com.nextday.gateway" level="INFO">
        <appender-ref ref="DAILY_ROLLING_FILE_APPENDER" />
    </logger>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
    
    <logger name="jdbc" level="OFF"/>
	<logger name="jdbc.sqlonly" level="OFF"/>
	<logger name="jdbc.sqltiming" level="DEBUG"/>
	<logger name="jdbc.audit" level="OFF"/>
	<logger name="jdbc.resultset" level="OFF"/>
	<logger name="jdbc.resultsettable" level="DEBUG"/>
	<logger name="jdbc.connection" level="OFF"/>
    
</configuration>

 

Log 출력 확인

Gradle Refresh하여 build.gradle 설정 저장 후 Application 실행하여 쿼리 실행을 위한 아무 동작을 한다.

작성 글 목록을 출력하는 기능을 웹에서 수행했다. IDE에서 아래와 같이 Console창에 Log가 출력되고 있다.

궁금한 점은, 기본 Log 설정 파일 이름(log4j2.xml)로 설정 파일을 작성하고 Log가 출력된 결과와 Log 설정 파일 이름을 임의로 변경 후 Log가 출력된 결과가 다르다는 점이다. 설정도 동일하다. 좀 더 알아봐야겠다.

 

참고

https://javacpro.tistory.com/74

 

[전자정부프레임워크] Oracle log4jdbc 로 쿼리로그 출력

환경 DB : Oracle 11g XE Framework : egovFramework 3.8 ojdbc 버전 : ojdbc6 1. pom.xml 에 dependency 추가 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 2. context-datasource.xml 수정 driverCla..

javacpro.tistory.com

반응형