Laravel给生产环境添加监听事件(SQL日志监听)
发布时间 - 2026-01-11 01:56:55 点击率:次本文主要给大家介绍的是关于Laravel给生产环境添加监听事件(SQL日志监听)的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

laravel版本:5.2.*
一、创建监听器
php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecuted
or
sudo /usr/local/bin/php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecuted
会自动生成文件 app/Listeners/QueryListener.php
二、注册事件
打开 app/Providers/EventServiceProvider.php,在 $listen 中添加 Illuminate\Database\Events\QueryExecuted 事件的监听器为 QueryListener
protected $listen = [ 'Illuminate\Database\Events\QueryExecuted' => [ 'App\Listeners\QueryListener', ], ];
最终代码如下
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\QueryListener',
],
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events)
{
parent::boot($events);
//
}
}
三、添加逻辑
打开 app/Listeners/QueryListener.php
光有一个空的监听器是不够的,我们需要自己实现如何把 $sql 记录到日志中。为此,对 QueryListener 进行改造,完善其 handle 方法如下:
$sql = str_replace("?", "'%s'", $event->sql);
$log = vsprintf($sql, $event->bindings);
Log::info($log);
最终代码如下
namespace App\Listeners;
use Log;
use Illuminate\Database\Events\QueryExecuted;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class QueryListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param QueryExecuted $event
* @return void
*/
public function handle(QueryExecuted $event)
{
$sql = str_replace("?", "'%s'", $event->sql);
$log = vsprintf($sql, $event->bindings);
Log::info($log);
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# laravel
# 事件监听
# 监听
# sql
# 日志
# Laravel框架实现利用监听器进行sql语句记录功能
# 深入解析PHP的Laravel框架中的event事件操作
# 利用Laravel事件系统如何实现登录日志的记录详解
# Laravel模型事件的实现原理详解
# laravel学习笔记之模型事件的几种用法示例
# 分享个简单易懂且非常有用的laravel事件
# Laravel事件监听器用法实例分析
# 的是
# 相关内容
# 给大家
# 这篇文章
# 谢谢大家
# 自动生成
# 有一个
# 方法如下
# 有疑问
# Listeners
# bin
# app
# sudo
# QueryExecuted
# local
# usr
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Angular 表单中正确绑定输入值以确保提交与验证正常工作
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
微信公众帐号开发教程之图文消息全攻略
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Android Socket接口实现即时通讯实例代码
如何快速搭建个人网站并优化SEO?
如何在腾讯云服务器上快速搭建个人网站?
Python3.6正式版新特性预览
在Oracle关闭情况下如何修改spfile的参数
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
独立制作一个网站多少钱,建立网站需要花多少钱?
原生JS实现图片轮播切换效果
Android中AutoCompleteTextView自动提示
详解CentOS6.5 安装 MySQL5.1.71的方法
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
iOS正则表达式验证手机号、邮箱、身份证号等
如何为不同团队 ID 动态生成多个“认领值班”按钮
如何正确选择百度移动适配建站域名?
,南京靠谱的征婚网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何用y主机助手快速搭建网站?
重庆市网站制作公司,重庆招聘网站哪个好?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何在阿里云高效完成企业建站全流程?
详解jQuery停止动画——stop()方法的使用
如何批量查询域名的建站时间记录?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
如何用搬瓦工VPS快速搭建个人网站?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Python文件流缓冲机制_IO性能解析【教程】
三星网站视频制作教程下载,三星w23网页如何全屏?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel如何处理异常和错误?(Handler示例)
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
原生JS获取元素集合的子元素宽度实例

