개발공작소
article thumbnail
728x90

 

 

 

 

다음과 같이 쿼리를 호출하는 녀석이 있다고 해보자.

 

 

testMapper.java

public void stringTest() {
    String srh = "팝테스트";
    String result = sqlSession.selectOne("dao.Inquiry.stringTest", srh);
    System.out.println(result);
}

 

 

testMapper.xml

<select id="stringTest" parameterType="String" resultType="String">
    SELECT BEG_DE
        FROM DBTEST.SM_POPUP 
        WHERE 1 = 1
        <if test="_parameter != null and _parameter != ''">    
            AND POP_SUB = #{_parameter}
        </if>  
</select>

 

 

이 로직을 수행하면 DB에서 값을 가져오고, System.out.println()을 통해 콘솔에 값을 찍어주는데..

조금 더 자세히 로그를 콘솔에 찍어주고 싶다. 그럴 때 설정하는 게 log4j2이다..

 

 

이렇게 print만 뜨고 따로 로그는 출력 안됨..

 

그럼 바로 설정해보도록 하자. ( 여기서는 메이븐 기준으로 작성함 )

 

 

1. 의존성 추가

 

pom.xml에 프로젝트 생성시 자동생성되는 의존성을 주석처리하고 새로 의존성을 추가해주도록 하자.

 

pom.xml 

<!-- SQL 로그 출력 -->
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>

 

 

2. log4j 수정

 

1) 스프링 프로젝트 생성시 log4j라는 xml파일이 생성 되었을텐데, 이녀석을 수정해야 한다.

 

파일명을 log4j2.xml로 수정하고

아래 태그들을 추가해준다. ( 로그 레벨 등은 자기가 원하는대로 수정하면 됨 )

 

<logger name="jdbc.sqlonly" additivity="false"> 
    <level value="info"/> 
    <appender-ref ref="console"/> 
</logger>
<logger name="jdbc.sqltiming" additivity="false">
    <level value="warn" />
    <appender-ref ref="console"/> 
</logger>
<logger name="jdbc.audit" additivity="false"> 
    <level value="warn"/>  
    <appender-ref ref="console"/> 
</logger> 

<logger name="jdbc.resultset" additivity="false">
    <level value="warn" />
    <appender-ref ref="console"/> 
</logger>

<logger name="jdbc.resultsettable" additivity="false"> 
    <level value="info"/>  
    <appender-ref ref="console"/> 
</logger>

 

 

3. log4jdbc.log4j2.properties 생성

 

src/main/resources 경로에 log4jdbc.log4j2.properties을 생성하고 아래 코드를 추가한 뒤 저장하도록 하자.

 

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

 

 

4. datasource 코드 수정

 

root-context나 context-datasource에서 datasource 빈객체를 만드는 부분을 수정하도록 하자.

driverClassName과 URL만 수정해주면 된다.

 

<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe" />

 

위는 오라클 기준으로 작성하였다.

 

 

driverClassName은 그대로 갖다 쓰도록 하고, URL같은 경우에는 value에 jdbc: 와 db종류(여기서는 oracle)

사이에 log4jdbc만 넣어주면 된다.

 

결과

 

 

이렇게 sql로그가 콘솔에 잘 찍힌다.

 

 

 

728x90
profile

개발공작소

@모찌바라기

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