DB커넥션까지 완료했으니 내가 무슨 쿼리를 돌렸는지 쉽게 보기위해
로그에 돌린 쿼리를 찍는 작업을 진행하기로 했다.
log4j를 이용해서 로그에 쿼리를 찍어보도록 하자!
먼저 pom.xml에 dependency를 추가한다
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
그리고 나서
resource폴더 안에 log4jdbc.log4j2.properties를 만들고 다음과 같이 작성한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
그 후 커넥션 설정을 다음처럼 셋팅해주면 된다!
필자는 yml에 커넥션 설정값을 넣어놔서 yml을 수정했다.
config에서 커넥션 설정값을 넣어놨으면 그걸 수정하면 됨!
커넥션 url에 jdbc:log4jdbc:mysql:// << 이렇게 추가함
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
application.yml
하고 실행하면 로그에 쿼리가 남는걸 볼 수 있다.
그런데 보고싶은 정보는 쿼리와 결과값 정도인데 쓸데없는(?) 정보가 담긴 로그도 많이 찍히게 된다..
내가 보고싶은 정보만 보고싶다면 properties 혹은 yml에 다음과 같이 설정해주면 된다.
필자는 yml을 사용하므로 이렇게 적었다.
application.yml
logging:
level:
com:
zaxxer:
hikari: INFO
javax:
sql:
DataSource: OFF
jdbc:
audit: OFF
resultset: OFF
resultsettable: INFO
sqlonly: DEBUG
sqltiming: OFF
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
만약 properties를 사용한다면 다음과 같이 적으면 된다.
logging.level.jdbc.sqlonly=DEBUG
logging.level.jdbc.sqltiming=OFF
logging.level.jdbc.audit=OFF
logging.level.jdbc.resultset=OFF
logging.level.jdbc.resultsettable=INFO
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.com.zaxxer.hikari=INFO
logging.level.javax.sql.DataSource=OFF
sqlonly : SQL문 만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.
resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다.
resultsettable : SQL 결과 조회된 데이터의 table을 로그로 남긴다.
이렇게 설정하면 내가 원하는 정보만 로그로 잘 남겨진다~
'작업일지 > 신규업체 자동연동' 카테고리의 다른 글
#3 ) Db Connection 4개 연동하기 with MyBatis (0) | 2021.03.25 |
---|---|
#2 ) MyBatis와 SpringBoot 연동하기 (0) | 2021.03.25 |
#1 ) 신규업체 자동연동 프로그램을 만들어보자 (0) | 2021.03.25 |