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

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后,会自动触发该方法

相关文章:

  • Unity使用sherpa-onnx实现说话人识别
  • DS1302实时时钟模块
  • Java-List集合类全面解析
  • CSS- 4.5 css + div 布局 简易网易云音乐 官网布置实例
  • 「NameCraft · 幻想命名器」开发记:我和 CodeBuddy 的一次奇幻共创之旅
  • 易境通散货拼柜系统:提高货代企业货物配载效率
  • CEF源码历史版本编译避坑指南
  • JSON学习笔记
  • 视频监控中的存储方式有哪些?EasyCVR视频监控汇聚平台如何打造高效监控存储
  • 【STM32】ST-Link V2.1制作
  • 【CF】Day62——Codeforces Round 948 (Div. 2) CD (思维 + LCM + 枚举因数 | 思维 + 哈希)
  • Amazon Q 从入门到精通 – 测试与重构
  • Python的传参过程的小细节
  • k8s1.27集群部署mysql8.0双主双从
  • 第二道re
  • UE 材质基础第二天
  • 线光谱共焦传感器:复杂材质检测
  • 【盈达科技】GEO优化实战策略
  • 基于PetaLinux的Zynq PS应用自启动全攻略
  • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第五章
  • 习近平向2025年上海合作组织减贫和可持续发展论坛致贺信
  • 人民日报评论员观察:稳企业,全力以赴纾困解难
  • 北美票房|华纳又赢了,《死神来了6》开画远超预期
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • 海南保亭警方通报“两飞车党紧追女童”:两名初中生认错道歉
  • 读懂城市|成都高新区:打造“人尽其才”的“理想之城”