本文主要给大家介绍的是关于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
相关文章:
建站之星免费模板:自助建站系统与智能响应式一键生成
用v-html解决Vue.js渲染中html标签不被解析的问题
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何基于PHP生成高效IDC网络公司建站源码?
如何快速生成高效建站系统源代码?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何在云指建站中生成FTP站点?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何用IIS7快速搭建并优化网站站点?
如何在宝塔面板创建新站点?
如何通过cPanel快速搭建网站?
建站之星安装后如何配置SEO及设计样式?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
网站制作软件有哪些,制图软件有哪些?
建站主机CVM配置优化、SEO策略与性能提升指南
盘锦网站制作公司,盘锦大洼有多少5G网站?
香港服务器如何优化才能显著提升网站加载速度?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何在IIS管理器中快速创建并配置网站?
如何在IIS7中新建站点?详细步骤解析
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
专业网站建设制作报价,网页设计制作要考什么证?
ui设计制作网站有哪些,手机UI设计网址吗?
清除minerd进程的简单方法
宝塔面板创建网站无法访问?如何快速排查修复?
建站主机如何选?高性价比方案全解析
如何在阿里云服务器自主搭建网站?
如何获取上海专业网站定制建站电话?
C++时间戳转换成日期时间的步骤和示例代码
网站制作公司排行榜,四大门户网站排名?
制作企业网站建设方案,怎样建设一个公司网站?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何快速搭建虚拟主机网站?新手必看指南
如何通过FTP空间快速搭建安全高效网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何在腾讯云服务器快速搭建个人网站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
香港服务器租用每月最低只需15元?
官网网站制作腾讯审核要多久,联想路由器newifi官网
建站之星如何开启自定义404页面避免用户流失?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何快速启动建站代理加盟业务?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
*请认真填写需求信息,我们会在24小时内与您取得联系。