当前位置: 首页 > news >正文

被攻击网站手机网站优化排名首页

被攻击网站,手机网站优化排名首页,wordpress KODExplorer,自适应网站一般做几个尺寸p6spy介绍 p6spy 是一个开源的 JDBC 数据源代理工具,主要用于拦截和记录应用程序与数据库之间的所有 SQL 操作,方便开发者进行 SQL 调试、性能监控和问题排查。 p6spy可以打印实际执行的sql,在开发过程中方便调试,和使用框架无关…

p6spy介绍

p6spy 是一个开源的 JDBC 数据源代理工具,主要用于拦截和记录应用程序与数据库之间的所有 SQL 操作,方便开发者进行 SQL 调试、性能监控和问题排查。
p6spy可以打印实际执行的sql,在开发过程中方便调试,和使用框架无关,Mybatis和Hibernate等都可以使用。

使用方法

1.引入p6spy依赖
        <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version></dependency>
2.修改数据库连接信息,这里我使用的是Druid连接池
      oracleDataSource = new DruidDataSource();// 替换jdbcUrl为p6spy代理格式
//        oracleDataSource.setUrl("jdbc:oracle:thin:@10.5.1.22:1521/ORCL");oracleDataSource.setUrl("jdbc:p6spy:oracle:thin:@10.5.1.22:1521/ORCL");oracleDataSource.setUsername("ORACLE_USERNAME");oracleDataSource.setPassword("ORACLE_PASSWORD");// 这里使用的Druid连接池,不支持p6spy的自动装配,指定p6spy的代理类oracleDataSource.setDriverClassName("com.p6spy.engine.spy.P6SpyDriver");
3.在resource目录下创建配置文件spy.properties
# 指定日志实现,这里使用 SLF4J 输出日志
appender=com.p6spy.engine.spy.appender.Slf4JLogger# 默认为单行输出,这里指定多行日志输出格式,增加可读性
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
4. 控制台成功打印日志
10:58:53.784 [main] INFO p6spy - #1732071533784 | took 1ms | statement | connection 4| url jdbc:p6spy:oracle:thin:@10.5.1.22:1521/ORCL
SELECT 1 FROM DUAL
SELECT 1 FROM DUAL;
10:58:53.798 [main] INFO p6spy - #1732071533798 | took 12ms | statement | connection 4| url jdbc:p6spy:oracle:thin:@10.5.1.22:1521/ORCL
SELECT * FROM cms_mid_table WHERE table_module='CIF'
SELECT * FROM cms_mid_table WHERE table_module='CIF';

SQL打印两遍

原因

查看MessageFormattingStrategy代码,很简单,就是将参数组装成打印结果

public class MultiLineFormat implements MessageFormattingStrategy {@Overridepublic String formatMessage(final int connectionId, final String now, final long elapsed, final String category, final String prepared, final String sql, final String url) {return "#" + now + " | took " + elapsed + "ms | " + category + " | connection " + connectionId + "| url " + url + "\n" + prepared + "\n" + sql +";";}
}

而我在代码中是使用apache工具类QueryRunner#excute,直接执行sql的,没有使用预编译参数

    public void test()  {QueryRunner queryRunner = new QueryRunner();try {queryRunner.execute("DELETE FROM cms_mid_table WHERE table_module='CIF'", ETLConnectionPool.getObConnection());} catch (SQLException e) {throw new RuntimeException(e);}}

QueryRunner内部使用的是PrepareStatement的子类CallableStatement

    private int execute(Connection conn, boolean closeConn, String sql, Object... params) throws SQLException {if (conn == null) {throw new SQLException("Null connection");}if (sql == null) {if (closeConn) {close(conn);}throw new SQLException("Null SQL statement");}CallableStatement stmt = null;int rows = 0;try {stmt = this.prepareCall(conn, sql);this.fillStatement(stmt, params);stmt.execute();rows = stmt.getUpdateCount();this.retrieveOutParameters(stmt, params);} catch (SQLException e) {this.rethrow(e, sql, params);} finally {close(stmt);if (closeConn) {close(conn);}}return rows;}

因为我是直接执行的具体的SQL,所以预编译对象和实际直接的sql相同,导致打印结果看上去是相同的SQL打印了两遍。

解决方法

  1. 创建自定义日志格式化类
@Slf4j
public class CustomLogFormatter implements MessageFormattingStrategy {@Overridepublic String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {// 自定义sql日志内容return "#" + now + " | took " + elapsed + "ms | " + category + " | connection " + connectionId + "| url " + url+ "\n" + sql.replaceAll(" {2,}", " ") + ";\n";}
}
  1. 在spy.properties配置文件中指定自定义格式类
# 使用 SLF4J 输出日志
appender=com.p6spy.engine.spy.appender.Slf4JLogger# 使用自定义日志格式,实现只输出最终sql,不输出prepare对象
logMessageFormat=com.dhcc.utils.CustomLogFormatter
http://www.yayakq.cn/news/893452/

相关文章:

  • 个人建什么网站最赚钱吗php mysql网站开发
  • 不适合做设计的人seo公司哪里有
  • seo优化网站的注意事项无极任务平台网站进入
  • 宣讲家网站做四讲四有模范装置艺术那个网站做的好
  • 前端做网站的步骤新闻发稿公司
  • 门窗营销型网站网上企业登记注册流程
  • 建设银行网站收款怎么打明细玄武区网页设计培训
  • 淘宝客网站主机东莞网站制作公司是什么
  • 嘉兴ai人工智能开发网站建设网站文章内容
  • 网站登录页做多大尺寸的网站建设后怎样发信息
  • 网站建设专项检查哪里可以学家装设计师
  • 网新中英企业网站管理系统网页制作步骤主要有哪些
  • 最佳线上网站建设费用怎样做自己的国外网站
  • 携程特牌 的同时做别的网站中国建设银行大学生招聘信息网站
  • 娄底建设网站公司热可可怎么做视频网站
  • 网站建设图片按钮中关村在线app
  • 东营网站seo旅游的便宜的网站建设
  • 怀远做网站php网站容量
  • 做网站做app什么专业wordpress苏醒主题破解
  • 用什么软件做网站最简单免费自助建站软件
  • 在越南做网站都是什么人数据型网站
  • 推广 外贸 网站wordpress模板 装修
  • 自己做导航网站私人ftp服务器
  • 营销型网站建设成为企业发展新趋势网站反链接什么
  • 广州网站建设报价怎么建设一个宣传网站
  • 易语言怎么用网站做背景音乐四川省住房和城乡建设厅官网站网
  • 合肥网站建设晨飞wordpress+标签消失
  • 做网站找模版好吗选择网站设计公司佛山
  • 重庆网站托管安汇达大宗商品交易平台
  • 贵州网站推广公司wordpress 博客模板