Laravel5.2 实时记录sql语句log

Laravel version: 5.2

创建监听器

php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecuted

生成文件于 app/Listeners/QueryListener.php

注册事件

打开 app/Providers/EventServiceProvider.php,在 $listen 中添加 illuminate.query 事件的监听器为 QueryListener

protected $listen = [
    \Illuminate\Database\Events\QueryExecuted::class => [
        QueryListener::class
    ],
];

添加逻辑

编辑刚才生成的 QueryListener .php 文件

<?php

namespace App\Listeners;

use Log;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Events\QueryExecuted;

class QueryListener
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        $this->log = new Logger('sql');
        $this->log->pushHandler(
            new StreamHandler(
                storage_path('logs/sql.log'), 
                Logger::INFO
            )
        );
    }

    /**
     * Handle the event.
     *
     * @param  QueryExecuted  $event
     * @return void
     */
    public function handle(QueryExecuted $event)
    {
        if (env('APP_ENV', 'production') == 'local') {
            $sql = str_replace("?", "'%s'", $event->sql);

            $log = vsprintf($sql, $event->bindings);

            // Log::info($log);
            $this->log->addInfo($log);
        }
    }
}

这样所有的sql语句都会记录在 storage/logs/sql.log 文件里,结果如下

[2017-01-20 14:43:57] sql.INFO: update `user_login_count` set `register_user_num` = '5' where `id` = '182' [] []

参考文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 过去做事情急,什么东西拿起来就用,不喜欢进行系统性的学习,造成在使用过程中的错误和低效,现在感觉自己耐心多了,用之...
    马文Marvin阅读 6,109评论 0 10
  • 先说几句废话,调和气氛。事情的起由来自客户需求频繁变更,伟大的师傅决定横刀立马的改革使用新的框架(created ...
    wsdadan阅读 8,232评论 0 12
  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 12,725评论 0 121
  • a611561a78f0阅读 1,131评论 0 0
  • 这场雨,在我准备出门时落下。让我措手不及,甚至不曾惊喜 我是喜欢雨的,却不爱这样的不期而至 我更爱闲坐喝茶时看一场...
    若愚人生阅读 2,967评论 4 3