laravel记录接口执行的所有sql到日志文件

在开发过程中,我们的接口会出现响应速度慢的问题。可能引起的原因是网络IO、服务器CPU处理速度慢、硬盘IO慢、代码复杂度高、数据库慢sql等原因引起,需要先排除清楚原因。在排查慢sql的过程中,需要记录sql的执行条数,执行的秒数,sql的复杂度进行分析,下面是laravel框架记录每次接口请求的所有sql记录。
1、找到app/Providers/EventServiceProvider文件

![](https://img-blog.csdnimg.cn/28f85e91b8154d0caead82e9917e180b.png)

2、在boot方法中添加以下代码:

```
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
DB::listen(
function ($query) {
$tmp = str_replace('?', '"' . '%s' . '"', $query->sql);
$qBindings = [];
foreach ($query->bindings as $key => $value) {
if (is_numeric($key)) {
$qBindings[] = $value;
} else {
$tmp = str_replace(':' . $key, '"' . $value . '"', $tmp);
}
}
$tmp = vsprintf($tmp, $qBindings);
$tmp = str_replace("\\", "", $tmp);
Log::info(' execution time: ' . $query->time . 'ms; ' . $tmp . "\n\t");
}
);
}
```

实测结果:

![](https://img-blog.csdnimg.cn/f82b0ce4c85a4a079e426b6bbd8a6050.png)

    A+
发布日期:2023年01月09日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: