목차

Hibernate Log 남기기

Hibernate는 Log4j 옵션 설정을 통해 SQL 실행 로그 등을 세세히 남기도록 조정할 수 있다.

Hibernate 의 로깅을 사용하지 않고 다음과 같은 방법들을 사용할 수도 있다.

JDBC 드라이버 자체 로깅을 사용하면 프레임워크등에 의해 실행되는 너무 세세한 로그가 남는 반면, 파라미터까지 정확하게 정확한 호출 순서에 따라 로그를 볼 수 이는 장점이 있다.

Log Categories

logback

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- .... -->
    <logger name="org.hibernate.SQL" level="DEBUG" />
    <logger name="org.hibernate.tool.hbm2ddl" level="DEBUG"/>
    <logger name="org.hibernate.type.descriptor.sql" level="TRACE" /> <!-- Hibernate 4,5 -->
    <logger name="org.hibernate.orm.jdbc.bind" level="TRACE" /> <!-- Hibernate 6 -->
    <logger name="org.hibernate.stat" level="DEBUG" />
    <logger name="org.hibernate.SQL_SLOW" level="INFO" />
</configuration>

Log4j

log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
# http://blog.naver.com/jdkim528/140027638234 에서 가져옴. -> 쿼리 파라미터는 잘못돼 있음
 
 
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
 
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
 
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=TRACE   # 혹은 과거버전 log4j에서는 DEBUG
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info
 
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
 
### log cache activity ###
log4j.logger.org.hibernate.cache=info
 
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
 
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
 
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

디버깅시 가장 중요한 SQL로그와 파라미터/결과 로그는 log4j.logger.org.hibernate.SQL=debuglog4j.logger.org.hibernate.type=TRACE 이다.

SQL Formatter

참조