본문 바로가기

카테고리 없음

[Spring] Log4j 쿼리 로그 확인

이번엔 Mybatis에 작성해둔 쿼리로 화면단을 통해 입력받은 파라미터가 들어와서 결과가 제대로 보여지는지 확인하는 방법에 대해서 포스팅 할거야


- log4j.xml

먼저 log4j에 쿼리 로그가 출력되도록 설정해줄거야 물론 log4j2나 slf4j도 무방해

 

<!-- Query Loggers --> 라는 주석 아래에  jdbc로 시작하는 logger name 2개가 보일거야

 

그거만 추가해주면돼

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 
    <!-- Appenders -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p: %c - %m%n" />
        </layout>
    </appender>
    
    <!-- 3rdparty Loggers -->
    <logger name="org.springframework.core">
        <level value="info" />
    </logger>
    
    <logger name="org.springframework.beans">
        <level value="info" />
    </logger>
    
    <logger name="org.springframework.context">
        <level value="info" />
    </logger>
 
    <logger name="org.springframework.web">
        <level value="info" />
    </logger>
    
    <!-- Query Loggers --> 
    <logger name="jdbc.sqlonly" additivity="false"> 
        <level value="INFO"/> 
        <appender-ref ref="console-infolog"/> 
    </logger>
     
    <logger name="jdbc.resultsettable" additivity="false">
         <level value="INFO"/> 
         <appender-ref ref="console"/> 
     </logger>
 
 
    
    <!-- Root Logger -->
    <root>
        <priority value="warn" />
        <appender-ref ref="console" />
    </root>
    
</log4j:configuration>
 
cs

- pom.xml

그리고 pom.xml에 dependency 추가해주자

 <dependency>             
    <groupId>org.lazyluke</groupId>             
    <artifactId>log4jdbc-remix</artifactId>             
    <version>0.2.7</version>         
  </dependency>
cs

- data-context.xml or root-context.xml

아마 스프링 MVC 패턴 프로젝트로 생성했다면

 

webapp/WEB-INF/spring/root-context.xml

 

파일에 dataSource관련 설정 해줬을거야 이정도는 해놓고 값 잘들어가나 안들어가나

 

System.out.println 찍어보는 애들이라고 생각하고 진행할게

 

<!-- JDBC-MSSQL -->      
  <bean id="dataSourceSpied"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">          
    <property name="driverClassName"   value="$" />          
    <property name="url"  value="$" />          
    <property name="username"  value="$"  />          
    <property name="password"  value="$" />      
  </bean>      
  <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">           
    <constructor-arg ref="dataSourceSpied" />               
    <property name="logFormatter">                   
      <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">                       
        <property name="loggingType" value="MULTI_LINE" />                       
        <property name="sqlPrefix" value="SQL : "/>                   
      </bean>              
    </property>       
  </bean>
cs

- 쿼리로그 확인

여기까지 잘 따라와 줬다면 JUnit으로 테스트 코드를 돌려봤을때

 

아래와 같은 결과가 나와줘야해 임의로 설정해준 'tt'가 쿼리 결과에 출력되는게 보이지?

 

이렇게 확인 하는건 JUnit을 사용할 줄 알아야하는데

 

이걸 한 번에 다루면 또 엄청 길어지니까 나중에 나눠서 다루던지 할게 ㅋㅋ

 

그럼 오늘도 삽질의 범위를 조금이나마 좁혀졌길 바라면서 마무리 한다.

  @Test   
  public void testSearchPaging() {         
  Criteria cri = new Criteria();              
  cri.setType("TCW");         
  cri.setKeyword("tt");                  
  List<BoardDTO> list = boardDAO.getListWithPaging(cri);                  
  list.forEach(b -> log.info(b));     
  }
cs

)