hibernate log4j2输出sql带参数

时间:2023-03-09 03:13:05
hibernate log4j2输出sql带参数

  网上有很多是输出sql ,参数以?的形式,后面输出参数binding的log,还要自己拼接特别麻烦;这里整理下输出原生sql的方法。组件是log4jdbc

1: 修改pom.xml,确定有下面的配置,其中前三个是指定slf4j用log4j2;

<!-- log配置:Log4j2 + Slf4j -->
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-web</artifactId>
  <version>2.1</version>
</dependency>
<dependency> <!-- 桥接:告诉Slf4j使用Log4j2 -->
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j-impl</artifactId>
  <version>2.1</version>
</dependency>
<dependency> <!-- 桥接:告诉commons logging使用Log4j2 -->
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-jcl</artifactId>
  <version>2.1</version>
</dependency>
<dependency>
  <groupId>com.googlecode.log4jdbc</groupId>
  <artifactId>log4jdbc</artifactId>
  <version>1.2</version>
</dependency>

2: 修改数据库配置文件,我的项目名字里是 jdbc-datasource.properties

hibernate.default_schema=test
hibernate.hbm2ddl.auto=none
db.provider.name=oracle
jdbc.driver=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:log4jdbc:oracle:thin:@//192.168.8.10:1521/dsdb
jdbc.user=test
jdbc.password=test 原先是
#jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@//192.168.6.98:1521/dsdb

3: 修改log4j2.xml

    <logger name="jdbc.sqltiming" level="INFO">
<appender-ref ref="hibernate.sql" /> <!-- 这里要替换成自己的 -->
</logger>
<logger name="jdbc.resultsettable" level="OFF"></logger>
<logger name="jdbc.sqlonly" level="OFF"></logger>
<logger name="jdbc.audit" level="OFF"></logger>
<logger name="jdbc.resultset" level="OFF"></logger>
<logger name="jdbc.connection" level="OFF"></logger>

最后结果,还带执行时间;

hibernate log4j2输出sql带参数