使用log4jdbc实现打印完整带参数的sql语句日志
2018-03-24 23:11
861 查看
想要打印出来的sql是可以直接复制到数据库中去执行的sql语句?
[java.sql.PreparedStatement] - ==> Executing: select * from t_admin limit ?,?[java.sql.PreparedStatement] - ==> Parameters: 5(Integer), 500(Integer)
现在的情况是:sql和参数分两行打印,想要的效果如下:
[java.sql.PreparedStatement] - ==> select * from t_admin limit 5,500
一、log4jdbc的简单介绍
平时开发使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在Mysql等客户端直接执行,加快调试速度。二、log4jdbc的使用
首先要下载log4jdbc的jar包log4jdbc-1.2.jar以及依赖的相关Jar包log4j-1.2.17.jar、slf4j-api-1.6.0.jar、slf4j-log4j12-1.7.7.jar。Maven 导包
<dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency>如果不是maven项目就去百度下载这四个jar
接下来把我们的数据库连接驱动和url进行修改
jdbc.propertiesdriver=net.sf.log4jdbc.DriverSpyurl=jdbc:log4jdbc:mysql://127.0.0.1:3306/test
username=user01
password=user01
#\u5b9a\u4e49\u521d\u59cb\u8fde\u63a5\u6570
initialSize=0
#\u5b9a\u4e49\u6700\u5927\u8fde\u63a5\u6570
maxActive=20
#\u5b9a\u4e49\u6700\u5927\u7a7a\u95f2
maxIdle=20
#\u5b9a\u4e49\u6700\u5c0f\u7a7a\u95f2
minIdle=1
#\u5b9a\u4e49\u6700\u957f\u7b49\u5f85\u65f6\u95f4
maxWait=60000
最后一步 log4j.properties
### set log levels ### log4j.rootLogger = DENUG , console , debug , error ### console ### log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n ### log file ### log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender log4j.appender.debug.File = ../logs/springmvc-demo.log log4j.appender.debug.Append = true log4j.appender.debug.Threshold = INFO log4j.appender.debug.layout = org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n ### exception ### log4j.appender.error = org.apache.log4j.DailyRollingFileAppender log4j.appender.error.File = ../logs/springmvc-demo_error.log log4j.appender.error.Append = true log4j.appender.error.Threshold = ERROR log4j.appender.error.layout = org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n ###需要声明,然后下方才可以使druid sql输出,否则会抛出log4j.error.key not found log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org 94d3 .apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %l %c%n%p: %m%n ### druid sql ### log4j.logger.druid.sql=warn,stdout log4j.logger.druid.sql.DataSource=warn,stdout log4j.logger.druid.sql.Connection=warn,stdout log4j.logger.druid.sql.Statement=warn,stdout log4j.logger.druid.sql.ResultSet=warn,stdout
好了,大功告成,看一下结果
相关文章推荐
- c++11使用可变参数实现日志打印
- EOS中如何在日志文件中打印SQL语句及参数
- springboot2.0+log4jdbc将sql语句完整写入日志文件并分开 4000 保存
- 好记性不如烂笔头14-使用log4jdbc显示完整SQL语句和执行时间
- Jfinal中使用日志框架输出完整sql语句信息(mysql+oracle)
- Mybatis 的多个参数的使用和 sql日志的打印
- 使用log4jdbc,打印输出完整的sql
- 使用Log4jdbc-log4j2打印mybatis的sql语句
- 在ADO.NET中使用参数化SQL语句的大同小异
- 在ADO.NET中使用参数化SQL语句的大同小异
- 使用sql语句实现表的分页显示--实用--面试官最喜欢问的考题
- SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
- 怎样在SQL*Plus中使用 '&' 来实现自定义参数变量?
- 传递参数执行sql语句的实现
- 全Sql语句实现SBO事务日志记录与查询
- SQL:如何在LIKE语句中使用参数,以及动态执行SQL语句
- 使用LOG4J打印ibatis执行的SQL语句
- 使用动态SQL语句实现Sbo的客户物料组销售二维分析
- 在ADO.NET中使用参数化SQL语句的大同小异
- 在ADO.NET中使用参数化SQL语句的大同小异