티스토리 뷰
이곳에서 확인할 수 있는 log4jdbc-log4j2 를 이용합니다.
스프링 부트 프로젝트에서 pom.xml 에 라이브러리를 먼저 추가합니다.
1 2 3 4 5 | <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency> | cs |
자바 7버전 이상에서 사용 가능한 최신 버전을 사용할게요.
그 다음 스프링부트의 기본 config 설정 파일인 application.properties 또는 application.yml 에서 설정을 해야합니다. ( 저는 yml을 사용했습니다.)
기존의 datasource 설정 방법은 아래와 같습니다. 저는 SQL Server를 이용중에 있어요!
1 2 3 4 5 | spring: datasource: platform: mssql url: jdbc:sqlserver://localhost:1433;DatabaseName=TEST driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver | cs |
그러나, 쿼리를 출력하기 위해서는 아래와 같이 변경이 필요합니다.
1 2 3 4 5 | spring: datasource: platform: mssql url: jdbc:log4jdbc:sqlserver://localhost:1433;DatabaseName=TEST driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy | cs |
url 부분과 driverClassName 부분을 확인해주세요.
그러면, 이제 드라이버 클래스 설정 방법은 마무리가 되었고, 로그 출력에 대해서 설정파일을 변경을 해야 하는데요.
이 라이브러리를 사용할 때에는 Spring boot의 기본 로그 설정 파일인 logback.xml 파일과 함께 log4jdbc.log4j2.properties 라는 파일을 같이 생성해야 합니다. ( 이름 정확하게 입력해 주세요. )
logback.xml은 프로젝트의 패키지에 따른 출력, root 출력 등과 같은 부분도 설정할 수 잇구요.
jdbc sql 관련해서 설정도 할 수 잇습니다.
쿼리 출력 부분에 대해서만 본다면,
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 | <?xml version="1.0" encoding="UTF-8"?> <!-- jdbc.sqlonly : Logs only SQL jdbc.sqltiming : Logs the SQL, post-execution, including timing execution statistics jdbc.audit : Logs ALL JDBC calls except for ResultSets jdbc.resultset : all calls to ResultSet objects are logged jdbc.connection : Logs connection open and close events --> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern> </encoder> </appender> <logger name="jdbc" level="OFF"/> <logger name="jdbc.sqlonly" level="DEBUG" additivity="false">> <appender-ref ref="STDOUT" /> </logger> <logger name="jdbc.resultsettable" level="DEBUG" additivity="false">> <appender-ref ref="STDOUT" /> </logger> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> </configuration> | cs |
주석으로 설명도 되어 있긴 하지만 앞에 명칭 부분만 봐도 알 수 있듯이, 저는 쿼리 부분만, 그리고 결과만 출력하도록 설정을 하였습니다.
시간을 같이 보고 싶으신 분은 sqltiming을 사용하시면 되겟고, 결과를 제외한 모든 jdbc call을 보고 싶으신 분은 audit을 사용하면 되겟습니다.
위에 코드 구글 페이지로 가서 확인해보면, 상세하게 알 수 있지만, 로그 출력 방식은 그냥 log4j 와 SLF4J 사용하는 방법이 있네요.
마지막으로, log4jdbc.log4j2.properties 파일 설정인데요. 이 부분에서 slf4j를 사용하도록 logdelegator의 이름을 설정하는 것입니다.
1 2 | log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength=0 | cs |
별다른 설정이 필요 없네요. 1번 라인만 설정 되어 있으면, 쿼리가 한줄로 표시 됩니다.
2번 라인처럼 maxlinelength를 0으로 설정하면, 멀티-라인으로 쿼리가 출력이 됩니다.
저는 이제 스프링 부트 프로젝트에 MYBATIS를 설정해서 사용하고 있는데요, 쿼리 출력이 잘 됩니다.
물론, Spring DATA JPA의 쿼리도 잘 출력이 된다고 하네요.
이건 꿀팁(?) 까진 아니고,,, 쿼리가 출력될때 첫번째 라인은 로그 출력 첫번째 라인이라 앞 공백이 제거되어서 혼자 앞으로 튀어나와 있거나 그런데요...(멀티라인일때...)
저같은 경우는 MYBATIS라서, 쿼리 작성할 때 맨 윗줄에 SQL 주석으로 쿼리의 내용을 설명하는 문구를 넣었어요.
그러면 첫번째 라인은 주석으로 처리가 되어서, 출력 때에도 설명을 볼 수 있고, 두번째라인부터는 줄바꿈이 되어 있어서, 공백처리없이 깔끔하게 쿼리를 확인할 수가 있네요!
감사합니다.
--
한동안 게을러서 책도 안보고, 공부도 안하고, 겜만하고 살았는데요 ㅠㅠ
자바에 대해서 좀 더 깊게 공부를 하기 위해 생각하던 중에 자바 8버전으로 새로 쓰인 자바 책이 나오더라구요~
자바8로 공부하면서, 깊이 있는 자바 공부를 좀 더 해보려고 합니다.
가끔 머리도 좋고.. 개발도 잘 하시는 분들이... 써놓은 블로그를 보면.. 시무룩... 평법한 초보개발자는 웁니다...ㅎㅎ
'생활코딩 > Spring' 카테고리의 다른 글
스프링 부트(Spring Boot)에서 비동기(Async)로 다른 메소드 실행하기 (0) | 2016.04.29 |
---|---|
RollingFileAppender 활용, 로그 이름 변경이 가능하도록 작성하기 (0) | 2016.03.10 |
Spring Boot 를 공부합시다 - 01 (0) | 2015.08.03 |
Spring Boot IDE 디버깅 모드 설정 방법 (2) | 2015.07.22 |
AOP 에서 정의한 객체(값)를 타겟 메소드에 전달하기 (0) | 2015.05.28 |
- Total
- Today
- Yesterday
- @Temporal
- 오프라인 확인
- log4jdbc
- 쿼리 로그
- summernote
- jsonify
- 자바스크립트
- WYSIWYG
- 스프링 부트
- 브라우저 콘솔
- bootstrap
- Spring Boot
- GO1104 LED
- 정적 파일
- AngularJS
- learning javascript
- 초대장
- spring jpa
- static resources
- @Access
- telegram bot
- jQuery 삽입
- java
- mybatipse
- AOP
- 한성키보드
- Excel
- offline.js
- Spring
- RollingFileAppender
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |