
Laravel 配置 SqlDebug 服务,进行实时监听打印 SQL
发布日期:2021-05-09 04:16:34
浏览次数:14
分类:博客文章
本文共 1316 字,大约阅读时间需要 4 分钟。
0:释义
什么是服务容器简而言之,Laravel 服务容器 是一个用于存储绑定组件的盒子,它还会为应用提供所需的服务。Laravel 服务容器是用于管理类的依赖和执行依赖注入的工具,By Laravel 文档。什么是服务提供者如果说服务容器是提供绑定和依赖注入的的工具,那么 服务提供者 则是实现绑定的工具。
1:自定义服务提供者
php artisan make:provider SqlDebugServiceProvider# Explanation:# SqlDebugServiceProvider 自定义服务提供者的名字
2:注册自定义服务提供者
为了完成注册服务提供者的功能,仅需要将类名加入到 config/app.php 配置文件的 providers 节点。
'providers' => [ /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, /** * SQL 监听服务 */ App\Providers\SqlDebugServiceProvider::class, ],
3: 在 中 boot 方法中增加 SQL 监听服务
\DB::listen(function ($query) { $tmp = str_replace('?', '"' . '%s' . '"', $query->sql); $qBindings = []; foreach ($query->bindings as $key => $value) { if (is_numeric($key)) { $qBindings[] = $value; } else { $tmp = str_replace(':' . $key, '"' . $value . '"', $tmp); } } $tmp = vsprintf($tmp, $qBindings); $tmp = str_replace("\\", "", $tmp); \Log::debug('[execution time: ' . $query->time . 'ms] ' . $tmp);});
4: 会发现在 /storage/logs/ 目录下生成对应的 SQL 文件
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月02日 09时31分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
0608-nn和autograd的区别
2021-05-09
MYSQL 数据库结构优化
2021-05-09
leetcode 一些算法题及答案
2021-05-09
spring 整合 ActiveMQ
2021-05-09
PHP 取前一天或后一天、一个月时间
2021-05-09
Kafka 分布式的,基于发布/订阅的消息系统
2021-05-09
Spring Bean的加载
2021-05-09
flume-kafka-storm-hdfs-hadoop-hbase
2021-05-09
Web笔记(一) Web 简介与开发环境搭建
2021-05-09
Java基础回顾-缓冲流
2021-05-09
JSONPath小试牛刀之Snack3
2021-05-09
更强的 JsonPath 兼容性及性能测试
2021-05-09
Weed3 for java 新的微型ORM框架
2021-05-09
利用 Solon-web 框架写一个 Hello World
2021-05-09
Solon Ioc 的注解对比Spring及JSR330
2021-05-09
Solon 1.2.12 发布,新的惊喜
2021-05-09
Solon rpc 之 SocketD 协议 - 消息订阅模式
2021-05-09
Python实现简单的梯度下降法
2021-05-09
Python的logging模块基本用法
2021-05-09
推荐系统实践 0x00 序
2021-05-09