First, add a logging channel in config/logging.php:

return [
'channels' => [
'queries' => [
'driver' => 'daily',
'path' => storage_path('logs/queries.log'),
'level' => 'debug',
'days' => 28,
],
],
];

After that, update your AppServiceProvider in app/Providers/AppServiceProvider.php:

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
 
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
DB::listen(function ($query) {
$location = collect(debug_backtrace())->filter(function ($trace) {
return !str_contains($trace['file'], 'vendor/');
})->first(); // grab the first element of non vendor/ calls
 
$bindings = implode(", ", $query->bindings); // format the bindings as string
 
if ($query->time < 1) {
return;
}
 
Log::channel('queries')->info("
------------
Sql: $query->sql
Bindings: $bindings
Time: $query->time
File: ${location['file']}
Line: ${location['line']}
------------
");
});
}
}