회사에서 유지보수하는 프로젝트가 db에 쿼리를 날릴때마다? 이클립스 console 에
1
2
3
4
5
6
7
8
9
10
11
12 |
2014-09-17 19:33:14,266 DEBUG [java.sql.Connection] {conn-100000} Connection 2014-09-17 19:33:14,266 DEBUG [java.sql.Connection] {conn-100000} Connection 2014-09-17 19:33:14,276 DEBUG [java.sql.Connection] {conn-100000} Preparing Statement: SELECT * FROM ( SELECT a.menu_id , a.umenu_id , (select menu_nm from tc_menu_new where menu_id = a.umenu_id) as umenu_nm , a.menu_level , a.menu_nm , a.page_url , a.page_link , a.seq_no , a.use_yn , a.authmenu_yn , a.info_gb , SUBSTR (SYS_CONNECT_BY_PATH (A.MENU_ID, ' '), 2, 6) AS tmenu_id , substr(sys_connect_by_path(a.menu_nm, ' > '), 4) as fullpath , connect_by_isleaf as isleaf FROM tc_menu_new a WHERE 1=1 START WITH a.umenu_id is null CONNECT BY PRIOR a.menu_id = a.umenu_id ) M where 1=1 AND M.page_url = ? and M.menu_level in ('1','2') 2014-09-17 19:33:14,276 DEBUG [java.sql.Connection] {conn-100000} Preparing Statement: SELECT * FROM ( SELECT a.menu_id , a.umenu_id , (select menu_nm from tc_menu_new where menu_id = a.umenu_id) as umenu_nm , a.menu_level , a.menu_nm , a.page_url , a.page_link , a.seq_no , a.use_yn , a.authmenu_yn , a.info_gb , SUBSTR (SYS_CONNECT_BY_PATH (A.MENU_ID, ' '), 2, 6) AS tmenu_id , substr(sys_connect_by_path(a.menu_nm, ' > '), 4) as fullpath , connect_by_isleaf as isleaf FROM tc_menu_new a WHERE 1=1 START WITH a.umenu_id is null CONNECT BY PRIOR a.menu_id = a.umenu_id ) M where 1=1 AND M.page_url = ? and M.menu_level in ('1','2') 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Executing Statement: SELECT * FROM ( SELECT a.menu_id , a.umenu_id , (select menu_nm from tc_menu_new where menu_id = a.umenu_id) as umenu_nm , a.menu_level , a.menu_nm , a.page_url , a.page_link , a.seq_no , a.use_yn , a.authmenu_yn , a.info_gb , SUBSTR (SYS_CONNECT_BY_PATH (A.MENU_ID, ' '), 2, 6) AS tmenu_id , substr(sys_connect_by_path(a.menu_nm, ' > '), 4) as fullpath , connect_by_isleaf as isleaf FROM tc_menu_new a WHERE 1=1 START WITH a.umenu_id is null CONNECT BY PRIOR a.menu_id = a.umenu_id ) M where 1=1 AND M.page_url = ? and M.menu_level in ('1','2') 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Executing Statement: SELECT * FROM ( SELECT a.menu_id , a.umenu_id , (select menu_nm from tc_menu_new where menu_id = a.umenu_id) as umenu_nm , a.menu_level , a.menu_nm , a.page_url , a.page_link , a.seq_no , a.use_yn , a.authmenu_yn , a.info_gb , SUBSTR (SYS_CONNECT_BY_PATH (A.MENU_ID, ' '), 2, 6) AS tmenu_id , substr(sys_connect_by_path(a.menu_nm, ' > '), 4) as fullpath , connect_by_isleaf as isleaf FROM tc_menu_new a WHERE 1=1 START WITH a.umenu_id is null CONNECT BY PRIOR a.menu_id = a.umenu_id ) M where 1=1 AND M.page_url = ? and M.menu_level in ('1','2') 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Parameters: [/login.do] 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Parameters: [/login.do] 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Types: [java.lang.String] 2014-09-17 19:33:14,472 DEBUG [java.sql.PreparedStatement] {pstm-100001} Types: [java.lang.String] 2014-09-17 19:33:14,515 DEBUG [java.sql.ResultSet] {rset-100002} ResultSet 2014-09-17 19:33:14,515 DEBUG [java.sql.ResultSet] {rset-100002} ResultSet |
위와 같은 로그를 출력해 주었다. (해당 sql 을 소스에서 찾지 않고 콘솔에 있는것을 내용들을 사용할수 있어서 편햇다.)
그래서 위와 같은 설정을 개인 프로젝트에 적용해 보기로 하였다. 이유는 sql error 발생시 맨 마지막에 출력된 sql 로그를 복사해서 db 관리 툴에 바로 붙혀넣기하고 테스트 할수 있어 편했기 때문이다.
한번 적용해보았던 것이라 금방 끝날줄 알았는데 꾀 오래 걸렸다. (6시간 이상)
한번 설정하고 나면 이후에는 변경하는 일이 거의 없을거라 생각하여 공부를 깊게 하지 않았고, 개인적으로 호스팅 받고 있는 cafe24 tomcat server 가 계속 로그를 쌓다가 멈출까봐 그렇게 하였었다
log4j 는 log4j.xml 을 이용해서 설정하는 경우와 log4j.properties 를 이용해서 설정하는 방법이다.
그러나 log4j2 는 log4j2.xml 을 이용해서 설정하여야 한다. ( log4j.properties 를 사용하는 방법은 지원하지 않는다)
일단 pom.xml 에 관련 라이브러리를 추가하고 src/main/resources 내에 log4j2.xml 만 위치 시키면 된다.
egov 3.0 이상 프로젝트는 따로 라이브러리 설정 없이 log4j2 를 사용할수 있는 듯 하다.
나중에 알았는데 xml 내부에 logger 설정을 안해주어서 그런거엿다....
처음에는 lof4j 라이브러리 버전 호환 문제, 제대로 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 |
<? xml version = "1.0" encoding = "UTF-8" ?> < Configuration > < Appenders > < Console name = "console" target = "SYSTEM_OUT" > < PatternLayout pattern = "%d %5p [%c] %m%n" /> </ Console > </ Appenders > < Loggers > < Logger name = "egovframework" level = "DEBUG" additivity = "true" > < AppenderRef ref = "console" /> </ Logger > <!-- log SQL with timing information, post execution --> < logger name = "jdbc.sqltiming" level = "INFO" additivity = "true" > < appender-ref ref = "console" /> </ logger > < logger name = "org.springframework" level = "INFO" additivity = "true" > < appender-ref ref = "console" /> </ logger > < logger name = "java.sql.Connection" level = "DEBUG" additivity = "false" > < appender-ref ref = "console" /> </ logger > < logger name = "java.sql.Statement" level = "DEBUG" additivity = "false" > < appender-ref ref = "console" /> </ logger > < logger name = "java.sql.PreparedStatement" level = "DEBUG" additivity = "false" > < appender-ref ref = "console" /> </ logger > < logger name = "java.sql.ResultSet" level = "DEBUG" additivity = "false" > < appender-ref ref = "console" /> </ logger > < Root level = "ERROR" > < AppenderRef ref = "console" /> </ Root > </ Loggers > </ Configuration > |
아래 링크는 egov 에서 log4j2.xml 에 적용에 관해 설명한 문서이다
'log4j' 카테고리의 다른 글
log4j2 (0) | 2014.10.27 |
---|---|
log4j properties로 설정 방법 (0) | 2014.02.28 |
[log4j] Conversion Pattern (0) | 2014.01.06 |