全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Laravel给生产环境添加监听事件(SQL日志监听)

本文主要给大家介绍的是关于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小时内与您取得联系。