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

thinkphp6实现统一监听并记录所有执行的sql语句除查询外

  1. 创建文件app/middleware/SqlLogger.php
<?php
namespace app\middleware;use think\facade\Db;
use think\facade\Session;class SqlLogger
{public function handle($request, \Closure $next){// 监听所有SQL $request->ip()Db::listen(function($sql, $time) {if (preg_match('/^(INSERT|UPDATE|DELETE|REPLACE)/i', $sql)) {$log = ['user_id' => Session::get('userid', 'guest'),'sql'     => $sql,'time'    => date('Y-m-d H:i:s'),'ip'      => '127.1.1.1'];file_put_contents("D:/phpstudy_pro/WWW/sql.log", json_encode($log)."\n", FILE_APPEND);}});return $next($request);}
}?>
  1. 打开app/middleware.php文件并注册该中间件
<?php
// 全局中间件定义文件
return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middleware\LoadLangPack::class,// Session初始化\think\middleware\SessionInit::class,//跨中间件\think\middleware\AllowCrossDomain::class,\app\middleware\SqlLogger::class
];
  1. 最终效果:执行修改sql后,会自动触发该方法
http://www.xdnf.cn/news/7484.html

相关文章:

  • 2021-10-29 C++求位数及各位和
  • MathType公式如何按照(1)(2)…编号
  • 定积分的“偶倍奇零”性质及其使用条件
  • 软件设计师“关系模式和关系代数”真题考点分析——求三连
  • Mergekit——高频合并算法 TIES解析
  • C 语言学习笔记(函数2)
  • 【实战教程】如何添加git仓库的子模块
  • ipynb文件的一键访问(顺带启动jupyter)实现程序演示
  • Excel导入校验
  • 获得AI相关认证证书对个人职业发展的具体帮助有哪些?
  • mybtais plus使用拦截器打印完整SQL语句
  • Pyro:基于PyTorch的概率编程框架
  • 代码审查服务费用受哪些因素影响?如何确定合理报价?
  • 《Opensearch-SQL》论文精读:2025年在BIRD的SOTA方法(Text-to-SQL任务)
  • reshape/view/permute的原理
  • 7-2 银行业务队列简单模拟
  • 【PhysUnits】4.5 负数类型(Neg<P>)算术运算(negative.rs)
  • Node.js 实战八:服务部署方案对比与实践
  • 应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新
  • 牛客网 NC274692 题解:素世喝茶
  • 低空经济的法律挑战与合规实践
  • uv 包管理工具使用教程
  • pkg-config 是什么,如何工作的
  • 深入解析`lsof`命令:查看系统中打开文件与进程信息
  • 【Nuxt3】安装 Naive UI 按需自动引入组件
  • ThreadLocal 源码深度解析
  • Linux基础第四天
  • goldenDB创建函数索引报错问题
  • 鸿蒙 Background Tasks Kit(后台任务开发服务)
  • 北京本地 SEO 推广:从技术成本到效果转化的深度拆解