记录/保存从laravel执行的所有SQL查询

时间:2018-11-20 20:42:42

标签: php laravel laravel-5

我们面临着一个非常关键和奇怪的问题,经过漫长的过程,几乎没有数据丢失。我们正在处理货物数据,一船可能包含来自1000个客户的1000箱。每个客户都将获得自己的跟踪号(awb号),我们将在一个货号中添加1000个货号,然后将使用货号更新每个流程。当我们更新货件编号时,所有相关的货件将被更新。在此过程中,我们不会更新托运人/收货人详细信息,但在此过程之后,将删除随机托运人和收货人数据。我们已经分析了整个代码1周,并且不知道确切地删除了它的位置。这是一个生产问题,我们正处于非常关键的阶段。我们无法在我们的环境中重现此问题。但这是来自不同分支机构的客户端的随机报告。

为了解决这个问题,我们决定添加更多日志,并希望对执行中的SQL语句进行严格监控。无论如何,我必须记录/保存来自Laravel(DB和Eloquent模型)的执行查询。 我期望的是,如果我在laravel框架类中添加一段代码,它必须将sql查询记录在文件/数据库中,这样我们就不会错过任何查询。

我们开始分析日志,但仍然没有任何线索,有人可以建议如何解决此问题吗?

我们正在使用Laravel 5.5

1 个答案:

答案 0 :(得分:1)

app\Providers\AppServiceProvider.php内部编写以下代码。 不要忘记use Illuminate\Support\Facades\DB;

您可以存储此查询,也可以根据需要登录。

public function boot()
{
    DB::listen(function ($query) {
        dd($query->sql);
        // $query->bindings
        // $query->time
    });
}

引用:https://laravel.com/docs/5.5/database#listening-for-query-events