创建event handler
写道
php artisan handler:event QueryLogTracker
QueryLogTracker.php
<?php namespace App\Handlers\Events; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Log\Writer; use Monolog\Logger as Monolog; use App; class QueryLogTracker { protected $myLogger; /** * Create the event handler. * * @return void */ public function __construct() { $this->myLogger = new Writer( new Monolog( 'SQL log' ) ); $this->myLogger->useFiles(App::storagePath().'/logs/sql.log' ); } /** * Handle the event. * * @param illuminate.query $event * @return void */ public function handle($query, $bindings, $time, $name) { $data = compact( 'bindings', 'time', 'name' ); // Format binding data for sql insertion foreach( $bindings as $i => $binding ) { if( $binding instanceof \DateTime ) { $bindings[$i] = $binding->format( '\'Y-m-d H:i:s\'' ); } else if( is_string( $binding ) ) { $bindings[$i] = "'$binding'"; } } // Insert bindings into query $query = str_replace( array( '%', '?' ), array( '%%', '%s' ), $query ); $query = vsprintf( $query, $bindings ); $this->myLogger->info( $query, $data ); } }
修改 EventServiceProvider.php
protected $listen = [ 'App\Events\SomeEvent' => [ 'App\Listeners\EventListener', ], 'illuminate.query' => [ 'App\Handlers\Events\QueryLogTracker', ], ];
--------------------------------------------2015/12/29 更新-------------------------------------------------
最新版laravel5.2放出后,上面的例子将不再实用。
首先已经没有了php artisan handler:event这个命令,其次也没有了“illuminate.query”这个字符串事件。
实现方法更新为以下:
1.先在类EventServiceProvider中注册事件监听
protected $listen = [ 'App\Events\SomeEvent' => [ 'App\Listeners\EventListener', ], 'Illuminate\Database\Events\QueryExecuted' => [ 'App\Listeners\QueryLogTracker', ], ];2.执行以下命令,添加未创建的事件和监听器
写道
php artisan event:generate
3.编辑类QueryLogTracker
<?php namespace App\Listeners; use Illuminate\Database\Events\QueryExecuted; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Log\Writer; use Monolog\Logger as Monolog; use App; class QueryLogTracker { /** * Create the event listener. * * @return void */ public function __construct() { $this->myLogger = new Writer( new Monolog( 'SQL log' ) ); $this->myLogger->useDailyFiles(App::storagePath().'/logs/sql.log' ); } /** * Handle the event. * * @param QueryExecuted $event * @return void */ public function handle(QueryExecuted $event) { $sql = $event->sql; $time = $event->time; $bindings = $event->bindings; $name = $event->connectionName; $data = compact( 'bindings', 'time', 'name' ); // Format binding data for sql insertion foreach( $bindings as $i => $binding ) { if( $binding instanceof \DateTime ) { $bindings[$i] = $binding->format( '\'Y-m-d H:i:s\'' ); } else if( is_string( $binding ) ) { $bindings[$i] = "'$binding'"; } } // Insert bindings into query $query1 = str_replace( array( '%', '?' ), array( '%%', '%s' ), $sql ); $query2 = vsprintf( $query1, $bindings ); $this->myLogger->info( $query2.PHP_EOL, $data); } }
相关推荐
"Laravel开发-monitor" 提供了一种有效的方式来监视日志文件,特别是"querys.log"和"laravel.log",这两个文件记录了数据库查询和框架的错误与调试信息。 "querys.log"文件包含了所有执行过的数据库查询,这对于...
Laravel Indexer监视页面上运行的SELECT查询,并允许将数据库索引动态添加到SELECT查询中。 然后在页面上直接显示EXPLAIN或MySQL执行计划的结果。 Indexer提供的结果将帮助您查看哪些索引最适合页面上运行的不同...
监视SQL查询。 在控制台中显示从应用程序执行的实时SQL查询。 优化SQL查询。 自动运行explain命令并输出到控制台。 检测缓慢SQL查询。 根据您的配置突出显示慢速SQL查询。 要求 PHP:^ 7.0 Laravel:〜5.5,〜5.6...
在“Laravel开发-df-azure”这个项目中,我们聚焦于将Laravel与Microsoft Azure云服务相结合,充分利用两者的优势来构建高效、可扩展的Web应用程序。 DreamFactory是一个开源API管理和后端服务平台,它允许开发者...
它为开发者提供了一种直观的方式来监视和优化PostgreSQL数据库的性能,是数据库管理中的一个宝贵工具。通过理解和使用这个项目,开发者不仅可以提升数据库管理技能,还能深入理解Laravel框架的工作原理。
5. **性能优化**:索引策略、查询优化、EXPLAIN分析,以及如何使用MySQL性能监视工具。 6. **分区与分片**:在大数据场景下的数据库设计策略。 7. **MySQL复制与集群**:实现高可用性和数据冗余的解决方案。 8. **...
##使用言语,フレームワークlaravel,vue,html,css,sql ##使い方1.一覧画面(みんなの记录):记录一覧画面。ダンベルのイラストと数字はいいね机能です。 2.个人一覧画面:カレンダーに,自分が投稿した日がチ...
加密警报,监视列表和投资组合跟踪应用 于2016年首次构建为WordPress网络应用程序,即使现在它仍可在同一堆栈上运行。 虽然很想切换到Laravel + Vue,但当前的WP + jQuery堆栈运行良好。 它快速,安全,相对易于...
管理员面板是Web应用的一部分,专为系统管理员设计,用于监视、维护和配置系统设置。"Core PHP Admin Panel"提供了一个图形界面,允许管理员执行各种管理任务,如用户管理、数据管理、设置管理和权限分配等。 5. *...
8. **性能监视工具**:如New Relic、Blackfire.io等,它们提供深入的性能洞察,包括页面加载时间、SQL查询性能等。 9. **PHP版本升级**:随着PHP版本的更新,新版本通常会带来性能提升,保持版本更新是提高性能的一...