Laravel 如何在lumen 5.7中记录api的所有查询

Laravel 如何在lumen 5.7中记录api的所有查询,laravel,lumen,Laravel,Lumen,我需要查看api中执行的所有查询。 我试了三种方法,但都不管用 1: 侦听方法不存在 2: 这个也不行 3: 我把1和2放在bootstrap/app.php中,第三个放在api控制器中 我应该提到我有不同的数据库 还有其他方法吗?您可以尝试使用第三种方法,例如: 然后,您可以在应用程序/bootstrap.php中将其注册为: $app->middleware([ App\Http\Middleware\LogQueries::class ]); 这应该在请求开始时启用查询日志,

我需要查看api中执行的所有查询。 我试了三种方法,但都不管用

1:

侦听方法不存在

2:

这个也不行

3:

我把1和2放在
bootstrap/app.php
中,第三个放在api控制器中

我应该提到我有不同的数据库


还有其他方法吗?

您可以尝试使用第三种方法,例如:

然后,您可以在
应用程序/bootstrap.php
中将其注册为:

$app->middleware([
   App\Http\Middleware\LogQueries::class
]);
这应该在请求开始时启用查询日志,然后在请求结束时记录所有查询。缺点是,如果执行许多大型查询(如长查询字符串中的大型查询),则需要将它们保存在内存中,直到请求结束,这可能并不理想


注意:我没有完全回忆起查询日志的数组结构,因此您可能需要调整日志步骤以更好地满足您的需要。

您尝试过吗?对
listen
的调用可能应该在服务提供商的
boot
方法中。。。但是
listen
方法在连接上,因此您需要在两个连接上定义该侦听器connections@BABAKASHRAFI是的,我试过了,但由于旧的php、compser和软件包,无法安装debuger@lagbox我也尝试了
的连接收听
,你能给我解释一下吗?也许我弄错了
Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
    Log::debug($query->sql . ' - ' . serialize($query->bindings));
});
DB::connection("mysql2")->enableQueryLog();
DB::connection("mysql2")->getQueryLog();
namespace Illuminate\Session\Middleware;

use Closure;

class LogQueries
{
    public function handle($request, Closure $next)
    {
        DB::connection("mysql2")->enableQueryLog();
        return $next($request);
    }

    public function terminate($request, $response)
    {
        Log::info('Queries executed', DB::connection("mysql2")->getQueryLog());
        
    }
}
$app->middleware([
   App\Http\Middleware\LogQueries::class
]);