2019独角兽企业重金招聘Python工程师标准>>>

import java.sql.Types;import com.alibaba.druid.filter.FilterEventAdapter;
import com.alibaba.druid.proxy.jdbc.JdbcParameter;
import com.alibaba.druid.proxy.jdbc.PreparedStatementProxy;
import com.alibaba.druid.proxy.jdbc.StatementProxy;
import com.alibaba.druid.util.JdbcUtils;
import com.dominos.cloud.common.util.SpringBeanUtils;public class TracerDruidFilter extends FilterEventAdapter {@Overrideprotected void statementExecuteBefore(StatementProxy statement, String sql) {outLog(sql);logParameter(statement);super.statementExecuteBefore(statement, sql);}@Overrideprotected void statementExecuteUpdateBefore(StatementProxy statement, String sql) {// TODO Auto-generated method stuboutLog(sql);logParameter(statement);super.statementExecuteUpdateBefore(statement, sql);}@Overrideprotected void statementExecuteQueryBefore(StatementProxy statement, String sql) {// TODO Auto-generated method stuboutLog(sql);logParameter(statement);super.statementExecuteQueryBefore(statement, sql);}protected void statementExecuteBatchAfter(StatementProxy statement, int[] result) {String sql;if (statement instanceof PreparedStatementProxy) {sql = ((PreparedStatementProxy) statement).getSql();} else {sql = statement.getBatchSql();}outLog(sql);super.statementExecuteQueryBefore(statement, sql);} private void logParameter(StatementProxy statement) {if (!(statement instanceof PreparedStatementProxy)) {return;}TracerUtils tracer = SpringBeanUtils.getBean(TracerUtils.class);if (tracer == null) {return;}{StringBuffer buf = new StringBuffer();buf.append(" Parameters : [");for (int i = 0, parametersSize = statement.getParametersSize(); i < parametersSize; ++i) {JdbcParameter parameter = statement.getParameter(i);if (i != 0) {buf.append(", ");}if (parameter == null) {continue;}int sqlType = parameter.getSqlType();Object value = parameter.getValue();switch (sqlType) {case Types.NULL:buf.append("NULL");break;default:buf.append(String.valueOf(value));break;}}buf.append("]");tracer.addTag("sql.Parameters", buf.toString());}{StringBuffer buf = new StringBuffer();buf.append(" Types : [");for (int i = 0, parametersSize = statement.getParametersSize(); i < parametersSize; ++i) {JdbcParameter parameter = statement.getParameter(i);if (i != 0) {buf.append(", ");}if (parameter == null) {continue;}int sqlType = parameter.getSqlType();buf.append(JdbcUtils.getTypeName(sqlType));}buf.append("]");tracer.addTag("sql.Types", buf.toString());}}private void outLog(String sql) {TracerUtils tracer = SpringBeanUtils.getBean(TracerUtils.class);if (tracer != null) {tracer.addTag("sql.sql", sql);}}
}

转载于:https://my.oschina.net/xiaominmin/blog/3049471

Tracer Druid 记录sql 以及参数相关推荐

  1. druid监控记录mysql_使用Druid监控SQL执行状态

    本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对spring web工程的JDBC监控. 其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有 ...

  2. 使用Druid监控SQL执行状态

    本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对Spring web工程的JDBC监控. 其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有 ...

  3. SpringBoot使用Druid监控SQL

    文章目录 1 监控mybatis下SQL 1.1 Druid简介 1.2 添加pom.xml依赖 1.3 配置相关属性 1.3.1 如何配置 Filter 1.4 监控页面 1.5 sql监控 1.6 ...

  4. 使用Druid监控SQL

    今天把C3P0连接池更换了Druid数据,没有想到Druid监控SQL如此强大,以下是我配置Druid数据源步骤 Druid介绍 Druid是一个JDBC组件库,包括数据库连接池.SQL Parser ...

  5. druid监控数据转存mysql_使用Druid监控SQL执行状态

    本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对Spring web工程的JDBC监控. 其实,我采用Druid替换其它连接池,最关键的一个理由是Druid有 ...

  6. 如何记录SQL Server数据库对象

    介绍 (Introduction) In any good programming reference, you will read that a developer has to document ...

  7. SpringBoot 整合Druid数据源SQL监控不显示问题

    SpringBoot 整合Druid数据源SQL监控不显示问题 项目场景: 问题描述: 解决方案: 项目场景: SpringBoot 整合Druid数据源SQL监控不显示 问题描述: 明明使用Drui ...

  8. 查询前几条记录SQL在不同数据库中的用法

    13,(1)查询前几条记录SQL在不同数据库中的用法; 1. ORACLE SELECT * FROM TABLE1 WHERE ROWNUM<=N 2. INFORMIX SELECT FIR ...

  9. Mybatis 实现SQL拦截并在控制台打印SQL和参数

    2019独角兽企业重金招聘Python工程师标准>>> 注:可以拦截sql 执行时间,优化sql.并打印sql 以及参数 第一步:创建类: SqlPrintInterceptor 并 ...

最新文章

  1. 融合与Web应用 2011年安全领域趋势展望
  2. pragma名字的来源
  3. Java的异常跟踪栈
  4. python中session的使用方法_python中requests库session对象的妙用详解
  5. opencv源码学习: getStructuringElement函数;
  6. 查询某表所有列名的SQL语句
  7. 什么是微服务_漫画:到底什么是微服务?
  8. Mp3原理及文件格式解析
  9. Transformer模型简介
  10. PDF虚拟打印机有什么用?关于PDF虚拟打印机你要知道的事情都在这
  11. 经典美文诵读2 If I Were a Boy Again假如我又回到了童年
  12. 使用QVE视频转换器制作gif动图
  13. 如何搭建适合自己团队的构建部署平台
  14. { content-visibility: auto; contain-intrinsic-size: 1px 5000px;}
  15. Java游戏开发——开心农场
  16. 如何不通过系统升级来安装window10正式版?(特别针对Xp用户)
  17. 双网卡同时连接内网和外网的解决方案
  18. TKCTF-学校内部的校赛
  19. Android 仿卡片消消除
  20. 相对论【2】杆和钟的运动

热门文章

  1. ftp服务器压缩文件,ftp压缩服务器文件
  2. 计算机专业指南考试,电大计算机专业专科期末考试试卷《计算机专业指南》试卷...
  3. fun python_Python(一)
  4. wireshark合并多个文件_小技巧:快速合并多个excel文件(收藏版)
  5. linux python自动补全_Linux下在python命令行中自动补全代码(py2、3,centos、ubuntu)...
  6. python函数分为_python 函数
  7. linux系统之centos/ubuntu选择
  8. 概率机器人总结——占用栅格地图先实践再推导
  9. 逻辑回归是个什么逻辑
  10. 【知识星球】卷积核和感受野可动态分配的分组卷积