一、环境配置
在日常的日志打印中,SQL日志都是先打印preperstatement,再打印参数,这样很不方便,可以通过log4jdbc或者P6Spy来进行代理打印。我们这里讲log4jdbc。
- 1、springboot 2.7.13
- 2、java 8
- 3、com.googlecode.log4jdbc 1.2 或者 org.bgee.log4jdbc-log4j2 1.16,本文使用
二、依赖引入
在项目的pom.xml 文件中引入依赖
- 方式一
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
- 方式二
或者
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
三、添加配置
在springboot的yml文件中配置:
spring:
application:
name: web
datasource:
druid:
type: com.alibaba.druid.pool.DruidDataSource
# driverClassName: com.mysql.cj.jdbc.Driver #原生配置
# driverClassName: net.sf.log4jdbc.DriverSpy #方式一的配置
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy #方式二的配置
url: jdbc:log4jdbc:mysql://localhost:3306/yshopb2c?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
注意: 如果是 方式二
的依赖,需要在项目的resources 目录下添加配置文件:log4jdbc.log4j2.properties,并添加配置内容:
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
四、日志配置
经过上面的配置以后已经可以进行原生SQL的日志打印了,但是会输出很多多余的日志信息,所有我们需要进行适当的控制。例如在日志配置文件logback-spring.xml
中添加日志打印配置:
<!--log4jdbc 日志配置,关闭不需要的输出-->
<!--仅仅记录 SQL 语句,会将占位符?替换为实际的参数-->
<!--<logger name="jdbc.sqlonly" level="OFF"/>-->
<!--除了 ResultSet 之外的所有JDBC调用信息,篇幅较长-->
<logger name="jdbc.audit" level="OFF"/>
<!--包含 ResultSet 的信息,输出篇幅较长-->
<logger name="jdbc.resultset" level="OFF"/>
<!--输出了 Connection 的 open、close 等信息-->
<logger name="jdbc.connection" level="OFF"/>
<!--记录 SQL 语句实际的执行时间-->
<logger name="jdbc.sqltiming" level="OFF"/>
<!--jdbc.resultsettable 显示前滚结果集的记录器-->
<logger name="jdbc.resultsettable" level="OFF"/>
<!--内部调试使用,输出 log4jdbc spy 加载驱动时的信息-->
<logger name="log4jdbc.debug" level="OFF"/>