방법은 간단하다. 아래와 같이 Service provider에 query listener를 등록하면 된다.
• 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) {
Log::info("----------------------------------------------------------------");
Log::info('sql => ' . $query->sql);
Log::info($query->bindings);
Log::info('elapsed time => ' . $query->time);
});
}
......
}
그러면 storage/logs/laravel.log 파일에 query 로그가 기록된다.
[2017-01-26 20:35:33] local.INFO: ----------------------------------------------------------------
[2017-01-26 20:35:33] local.INFO: sql => select count(*) as aggregate from `posts`
[2017-01-26 20:35:33] local.INFO: array (
)
[2017-01-26 20:35:33] local.INFO: elapsed time => 2.78
[2017-01-26 20:35:33] local.INFO: ----------------------------------------------------------------
[2017-01-26 20:35:33] local.INFO: sql => select * from `posts` order by `id` desc limit 10 offset 0
[2017-01-26 20:35:33] local.INFO: array (
)
[2017-01-26 20:35:33] local.INFO: elapsed time => 0.53