国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel給生產環境添加監聽事件(SQL日志監聽)

2024-05-04 23:58:09
字體:
來源:轉載
供稿:網友

本文主要給大家介紹的是關于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); }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南宁市| 芦溪县| 扎鲁特旗| 琼中| 永德县| 隆回县| 泸溪县| 新化县| 三门峡市| 宁城县| 嘉鱼县| 武定县| 九江县| 法库县| 偏关县| 柳江县| 三明市| 庆云县| 洱源县| 牙克石市| 罗平县| 普宁市| 广灵县| 吉首市| 天水市| 梧州市| 灵川县| 徐闻县| 瑞安市| 宁明县| 湟源县| 蓝田县| 喀喇沁旗| 滁州市| 驻马店市| 元朗区| 遂溪县| 丹江口市| 泾阳县| 广河县| 泾源县|