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

建设网站的总结wordpress 网页宽度

建设网站的总结,wordpress 网页宽度,制作网站费用怎么做分录,推广软件是什么文章目录背景具体实现MySQL5MySQL6MySQL8使用方法测试结果背景 公司的一个需求#xff0c;公司既有的链路追踪日志组件要支持MySQL的sql执行时间打印#xff0c;要实现链路追踪常用的手段就是实现第三方框架或工具提供的拦截器接口或者是过滤器接口#xff0c;对于MySQL也不… 文章目录背景具体实现MySQL5MySQL6MySQL8使用方法测试结果背景 公司的一个需求公司既有的链路追踪日志组件要支持MySQL的sql执行时间打印要实现链路追踪常用的手段就是实现第三方框架或工具提供的拦截器接口或者是过滤器接口对于MySQL也不例外实际上就是实现了MySQL驱动的拦截器接口而已。 具体实现 MySQL的渠道有不同的版本不同版本的拦截器接口是不同的所以要针对你所使用的不同版本的MySQL驱动去实现响应的拦截器接下来分别介绍下MySQL渠道5,6,8版本的实现方式。 MySQL5 这里以MySQL渠道5.1.18版本为例实现实现StatementInterceptorV2接口主要实现逻辑在preProcess和postProcess方法这两个方法是sql执行前后要执行的方法我所使用的框架是logback这里使用MDC来记录sql执行前的一个时间戳代码在postProcess方法MDC.put(sql_exec_time, start);自己也可以使用ThreadLocal等来实现然后在postProcess方法中使用MDC.get(sql_exec_time)将记录的sql执行前的时间取出来最后再用当前时间戳减去sql执行前的时间就算出了sql执行的时间。 import static net.logstash.logback.marker.Markers.append;import com.mysql.jdbc.Connection; import com.mysql.jdbc.ResultSetInternalMethods; import com.mysql.jdbc.Statement; import com.mysql.jdbc.StatementInterceptorV2; import com.redick.util.LogUtil; import java.sql.SQLException; import java.util.Properties; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC;/*** author Redick01*/ Slf4j public class Mysql5StatementInterceptor implements StatementInterceptorV2 {Overridepublic void init(Connection connection, Properties properties) throws SQLException {}Overridepublic ResultSetInternalMethods preProcess(String s, Statement statement, Connection connection)throws SQLException {String start String.valueOf(System.currentTimeMillis());MDC.put(sql_exec_time, start);log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_before), 开始执行sql);return null;}Overridepublic boolean executeTopLevelOnly() {return false;}Overridepublic void destroy() {}Overridepublic ResultSetInternalMethods postProcess(String s, Statement statement,ResultSetInternalMethods resultSetInternalMethods, Connection connection, int i,boolean b, boolean b1, SQLException e) throws SQLException {long start Long.parseLong(MDC.get(sql_exec_time));long end System.currentTimeMillis();log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_after).and(append(LogUtil.kLOG_KEY_SQL_EXEC_DURATION, end - start)), 结束执行sql);return null;} }MySQL6 MySQL6和MySQL5基本一样只是接口不是同一个直接放代码 import static net.logstash.logback.marker.Markers.append;import com.mysql.cj.api.MysqlConnection; import com.mysql.cj.api.jdbc.Statement; import com.mysql.cj.api.jdbc.interceptors.StatementInterceptor; import com.mysql.cj.api.log.Log; import com.mysql.cj.api.mysqla.result.Resultset; import com.redick.util.LogUtil; import java.sql.SQLException; import java.util.Properties; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC;/*** author Redick01*/ Slf4j public class Mysql6StatementInterceptor implements StatementInterceptor {Overridepublic StatementInterceptor init(MysqlConnection mysqlConnection, Properties properties,Log log) {return null;}Overridepublic T extends Resultset T preProcess(String s, Statement statement) throws SQLException {String start String.valueOf(System.currentTimeMillis());MDC.put(sql_exec_time, start);log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_before), 开始执行sql);return null;}Overridepublic boolean executeTopLevelOnly() {return false;}Overridepublic void destroy() {}Overridepublic T extends Resultset T postProcess(String s, Statement statement, T t, int i, boolean b,boolean b1, Exception e) throws SQLException {long start Long.parseLong(MDC.get(sql_exec_time));long end System.currentTimeMillis();log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_after).and(append(LogUtil.kLOG_KEY_SQL_EXEC_DURATION, end - start)), 结束执行sql);return null;} }MySQL8 MySQL8和MySQL5/6的拦截器接口又不一样了MySQL8的拦截器接口是com.mysql.cj.interceptors.QueryInterceptor统计sql执行时间的方式还是一样的代码如下 import static net.logstash.logback.marker.Markers.append;import com.mysql.cj.MysqlConnection; import com.mysql.cj.Query; import com.mysql.cj.interceptors.QueryInterceptor; import com.mysql.cj.log.Log; import com.mysql.cj.protocol.Resultset; import com.mysql.cj.protocol.ServerSession; import com.redick.util.LogUtil; import java.util.Properties; import java.util.function.Supplier; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC;/*** author Redick01*/ Slf4j public class Mysql8QueryInterceptor implements QueryInterceptor {Overridepublic QueryInterceptor init(MysqlConnection mysqlConnection, Properties properties, Log log) {return null;}Overridepublic T extends Resultset T preProcess(SupplierString supplier, Query query) {String start String.valueOf(System.currentTimeMillis());MDC.put(sql_exec_time, start);log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_before), 开始执行sql);return null;}Overridepublic boolean executeTopLevelOnly() {return false;}Overridepublic void destroy() {}Overridepublic T extends Resultset T postProcess(SupplierString supplier, Query query, T t,ServerSession serverSession) {long start Long.parseLong(MDC.get(sql_exec_time));long end System.currentTimeMillis();log.info(LogUtil.customizeMarker(LogUtil.kLOG_KEY_TRACE_TAG, sql_exec_after).and(append(LogUtil.kLOG_KEY_SQL_EXEC_DURATION, end - start)), 结束执行sql);return null;} }使用方法 MySQL5和6的使用方式一样在数据库链接的url中增加如下statementInterceptors参数例如 url: jdbc:mysql://127.0.0.1:3316/log-helper?useUnicodetruecharacterEncodingUTF8statementInterceptorscom.redick.support.mysql.Mysql5StatementInterceptorserverTimezoneCSTMySQL8则是在url中增加queryInterceptors参数例如 url: jdbc:mysql://127.0.0.1:3316/log-helper?useUnicodetruecharacterEncodingUTF8queryInterceptorscom.redick.support.mysql.Mysql8QueryInterceptorserverTimezoneCST测试结果 sql执行前日志 {timestamp:2023-02-28T17:16:29.23408:00,version:0.0.1,message:开始执行sql,logger_name:com.redick.support.mysql.Mysql5StatementInterceptor,thread_name:http-nio-3321-exec-4,level:INFO,level_value:20000,traceId:9ed930dc-4cc6-4719-bf33-9fcb618fd65b,spanId:1,request_type:getName,parentId:0,trace_tag:sql_exec_before}sql执行后日志sql_duration标识执行sql耗时3ms {timestamp:2023-02-28T17:16:29.23708:00,version:0.0.1,message:结束执行sql,logger_name:com.redick.support.mysql.Mysql5StatementInterceptor,thread_name:http-nio-3321-exec-4,level:INFO,level_value:20000,traceId:9ed930dc-4cc6-4719-bf33-9fcb618fd65b,spanId:1,request_type:getName,parentId:0,trace_tag:sql_exec_after,sql_duration:3}具体实现代码参考基于Spring AOP logstash-logback-encoder日志链路追踪工具LogHelper
http://www.hkea.cn/news/14487106/

相关文章:

  • 鞍山网站设计制作Discuz网站制作教程
  • 广州建论坛网站换友链的网站
  • 备案号放网站下面居中怎么做免费网站 视频
  • 中煤建设集团网站phpcms 网站打不开
  • wordpress写网站教程做虚拟货币交易网站
  • 企业网站主页素描模板常州市住房建设局网站
  • 如何撰写一个网站规划建设方案外贸是什么
  • 购物网站静态页面模板哪家网站开发培训好
  • 怎么做像天猫类似的网站浙江省工程建设协会网站
  • 做外贸自己建网站铜陵做网站的
  • 青浦php网站开发培训wordpress 文本 点不了
  • 万家灯火营销型网站达州市住房与城乡建设厅网站
  • 丰都网站建设哪家好一学一做教育视频网站有哪些内容
  • 服装网站建设目的石家庄青园网站建设
  • 门户网站功能清单论坛搭建教程
  • 黄岛开发区网站制作开放平台产品经理
  • 职工素质建设 网站网站添加 百度商桥
  • 青岛网页建站模板罗岗网站建设哪家好
  • 个人怎么做网站排名优化wordpress忘记所有密码
  • 四川哪家网站做的最好洛阳外贸网站推广
  • 以网络营销为导向的网站建设应注意什么问题wordpress 管理权限管理
  • 网站未授权cas要怎么做wordpress 文章 按钮
  • 郑州网站开发公司名称大全哈尔滨建站模板搭建
  • 学php网站开发好吗西安专业网站建设价格
  • 上海高端网站建设服务器网站的开发流程有哪几个阶段
  • 辽宁网站网站建设微商城下载
  • 想做一个网站怎么做素材网大全
  • 给企业开发网站网站做sem优化
  • 网站建设都需要外国做的福利小视频在线观看网站
  • 可以进入外国网站的浏览器微信小程序登录页面