laravel框架记录监听sql语句,并且打印到⽇志⽂件中 1添加到服务容器AppServiceProvider.php
2 boot ⽅法中
3if (env('APP_ENV') != 'production') {
4 \DB::listen(
5function ($sql) {
6foreach ($sql->bindings as$i => $binding) {
7if ($binding instanceof \DateTime) {
8$sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
9 } else {
10if (is_string($binding)) {
11$sql->bindings[$i] = "'$binding'";
12 }
13 }
14 }
15
16// Insert bindings into query
17$query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);
18
19$query = vsprintf($query, $sql->bindings);
20
21// Save the query to file
22$logFile = fopen(
23 storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
24 'a+'
laravel框架下载25 );
26fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
27fclose($logFile);
28 }
29 );
30 }
可以在执⾏查询的时候,记录下所有连锁查询的sql语句,便于排查性能和查问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论