티스토리 뷰

반응형

STS플러그인을 이용해서 Spring 프로젝트를 생성하면 일반적으로 log4j가 포함되어 있다.

MyBatis 연동을 하고나서 설정을 건드리지 않으면 쿼리는 콘솔창에 출력되지 않는다.

이럴 때는 log4j.xml 파일의 설정을 조금만 바꿔주면 간단히 해결된다.


/프로젝트명/src/main/resources폴더에 가면 일반적으로 log4j.xml 파일이 있을 것이다.

기본설정은 아래와 같을 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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>
    
    <!-- Application Loggers -->
    <logger name="com.my.sample">
        <level value="info" />
    </logger>
    
    <!-- 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>
 
    <!-- Root Logger -->
    <root>
        <priority value="info" />
        <appender-ref ref="console" />
    </root>
    
</log4j:configuration>
cs

14~16라인이 문제이다.

level이 debug이하여야 sql문이 출력되는데 기본값은 info로 되어있다.

log4j의 level에 대해서는 아래의 블로그에 자세하게 나와있으니 참고하도록 하자.

http://myblog.opendocs.co.kr/archives/950


14라인은 java소스가 있는 패키지 경로를 의미하고, 프로젝트 생성 시 입력한 패키지가 기본값으로 들어가 있다.

15라인을 debug로 바꿔주면 아래와 같이 sql문이 출력되는 것을 볼 수 있다.



trace나 all로 바꾸면 아래와 같이 데이터까지 표시된다.



특별히 패키지별로 로그를 관리할 필요가 없다면 아래와 같이 하는 게 더 간편할수도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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>
    
    <!-- Application Loggers -->
<!--     <logger name="com.my.sample"> -->
<!--         <level value="info" /> -->
<!--     </logger> -->
    
    <!-- 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>
 
    <!-- Root Logger -->
    <root>
        <priority value="debug" />
        <appender-ref ref="console" />
    </root>
    
</log4j:configuration>
cs

14~16라인을 주석처리하고, 37라인을 debug로 변경해줬다.

root logger는 별도로 설정된 패키지를 제외한 모든 패키지에 대한 설정인듯 하다.

이렇게 하면 패키지에 상관없이 모든 로그에 대한 설정을 한번에 할수 있다.


log4jdbc-remix를 사용하는 글이 많은데 특별한 목적이 없다면 

sts에 기본적으로 포함되어 있는 log4j를 사용하고,

성능이나 기능상 부족함이 느껴지면 log4j2나 logback으로 갈아타는 것이 바람직해보인다.


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함