출처 : http://a.zany.kr:9003/board/bView.asp?bCode=52299899&aCode=7620
● pom.xml 에 dependency 추가
- Apache log4j : http://logging.apache.org/log4j/1.2
- SLF4J : http://www.slf4j.org
- log4jdbc : http://code.google.com/p/log4jdbc/
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>
|
● spring context xml 파일에 log4j 환경 로드 Bean 설정
CLASSPATH 로 잡혀 있는 src/main/resources 디렉토리 안에 log4j.xml 또는 log4j.properties 파일을 넣어두면 되지만,
별도의 경로에 넣는 경우 아래와 같은 bean 설정을 통해 인식시켜줄 수 있다.
참고 : maven standard directory layout
|
1
2
3
4
5
6
7
8
9 |
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.springframework.util.Log4jConfigurer"/>
<property name="targetMethod" value="initLogging"/>
<property name="arguments">
<list>
<value>src/main/resources/config/log4j.xml</value>
</list>
</property>
</bean>
|
● myBatis DataSource Bean 설정
일반적으로 아래와 같은 형태로 DataSource 를 설정할 것이지만,
|
1
2
3
4
5
6 |
<bean id="dataSourceMobilebaseDB" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="username" value="myaccount" />
<property name="password" value="mypassword" />
</bean>
|
log4jdbc 를 사용하려면 아래와 같이 위의 DataSouce 설정에서 driverClassName, url 만 변경해 준다.
|
1
2
3
4
5
6 |
<bean id="dataSourceMobilebaseDB" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy" />
<property name="username" value="myaccount" />
<property name="password" value="mypassword" />
</bean>
|
● log4j.xml 파일 설정
- jdbc.sqlonly : logs executed sql with binding arguments replaced with bound data.
- jdbc.sqltiming : logs how long a sql took to execute.
- jdbc.audit : logs all jdbc calls except for ResultSets.
- jdbc.resultset : same as jdbc.audit plus ResultsSets.
- jdbc.connection: logs open and close connection events.
|
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 |
<?xml version="1.0" encoding="UTF-8"?>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HHmmss.SSS} [%-5p] %c{1}.%M():%L %m%n"/>
</layout>
</appender>
<logger name="jdbc.connection" 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.sqlonly" additivity="false">
<level value="WARN"/>
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.sqltiming" additivity="false">
<level value="INFO"/>
<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>
<root>
<level value="INFO"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
|
● 결과 확인
|
1
2
3
4
5
6
7
8
9
10
11
12 |
134552.226 [INFO ] LogManagerServiceTest.testGetMinMaxLogIds():36 ============================================
134552.226 [INFO ] LogManagerServiceTest.testGetMinMaxLogIds():37 TEST GET MIN-MAX LOG IDS
134552.226 [INFO ] LogManagerServiceTest.testGetMinMaxLogIds():38 ============================================
134552.343 [INFO ] sqltiming.sqlTimingOccured():357 select ifnull(min(log_id),-1) as logIdMin, ifnull(max(log_id),-1) as logIdMax,
count(log_id) as logCnt from app_logs_50659300 where logdate between str_to_date('20140101000000', '%Y%m%d%H%i%s')
and str_to_date('20140114235959', '%Y%m%d%H%i%s') {executed in 25 msec}
134552.344 [INFO ] resultsettable.println():108 |---------|---------|-------|
134552.345 [INFO ] resultsettable.println():108 |logIdMin |logIdMax |logCnt |
134552.345 [INFO ] resultsettable.println():108 |---------|---------|-------|
134552.345 [INFO ] resultsettable.println():108 |2441749 |2466679 |24931 |
134552.346 [INFO ] resultsettable.println():108 |---------|---------|-------|
134552.346 [INFO ] LogManagerServiceTest.testGetMinMaxLogIds():51 RESULT OK.
|
● 참고
== log4j.xml ==
http://pupustory.tistory.com/153
== log4jdbc ==
https://code.google.com/p/log4jdbc/
http://www.javacodegeeks.com/2012/05/log-jdbc-operations-with-log4jdbc.html
http://www.mimul.com/pebble/default/2008/10/24/1224847200000.html
댓글