15. logback - log4jdbc 쿼리 로그 개행 설정

1. dependency 추가

   - org.bgee.log4jdbc-log4j2 : 1.16 (더 이상의 버전 업데이트는 없는 듯)

   - pom.xml

<!-- ************************************************************ -->
<!--org.bgee.log4jdbc-log4j2 : 마지막 버전 1.16 -->
<!-- ************************************************************ -->

<dependency>
  <groupId>org.bgee.log4jdbc-log4j2</groupId>
  <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
  <version>1.16</version>
</dependency>

<!-- ************************************************************ -->

 

2. log4jdbc.log4j2.properties 작성

   - 일반 파일 생성으로 확장자 없이 생성

   - log4jdbc.dump.sql.maxlinelength : 행 제한 (0 : 무제한)

   - src > main > resources > log4jdbc.log4j2.properties

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

 

3. dataSource 정보 수정

   - db.properties 가 따로 설정되어 있을 경우

   - src > main > webapp > WEB-INF > spring > config > db.properties

db.driver=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
db.host=jdbc:log4jdbc:oracle:thin:@255.255.255.255:1521:orcl

   - 위 코드를 아래 소스에 바로 넣어도 상관없음

   - 변경 부분 : driverClassName, url

   - src > main > webapp > WEB-INF > spring > root-context.xml

<context:property-placeholder location="classpath:config/db.properties"/>

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="${db.driver}"/>
    <property name="url" value="${db.host}"/>
    <property name="username" value="${db.username}"/>
    <property name="password" value="${db.password}"/>
</bean>

 

4. logback. xml 설정 추가

   - logback-spring.xml 이였을 경우 파일을 제대로 읽지 못하는 상황이 있음. logback.xml 파일로 생성 시 읽어감

   - src > main > webapp > WEB-INF > spring > logback.xml

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

<!-- 60초 파일 변경 확인 및 재시작 -->
<configuration scan="true" scanPeriod="60 seconds">
	<!-- logback 종료 -->
	<shutdownHook />
	
	<!-- STDOUT(콘솔 로그 출력) -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>
		</encoder>
	</appender>

	<!-- jdbc sql 관련 log level 설정 -->
	<logger name="jdbc" level="OFF"/>
	<logger name="jdbc.sqlonly" level="OFF"/>
	<logger name="jdbc.sqltiming" level="INFO"/>
	<logger name="jdbc.audit" level="OFF"/>
	<logger name="jdbc.resultset" level="OFF"/>
	<logger name="jdbc.resultsettable" level="INFO"/>
	<logger name="jdbc.connection" level="OFF"/>
	
	<!-- root level : 기본적으로 설정할 log level -->
	<root level="INFO">
		<appender-ref ref="STDOUT" />
	</root>

</configuration>

 

5. 결과 확인