[Laravel5] 실행된 sql query의 로그를 기록하는 방법

Posted on 2017-01-26 20:42:10


방법은 간단하다. 아래와 같이 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

 



Related Posts

[Laravel5] log rotation 설정 2017-02-26 21:45:15
[Laravel5.4] migration시에 "Specified key was too long" 에러가 발생하는 문제의 해결방법 2017-02-18 23:45:28
[Laravel5] blade template에서 변수를 선언하는 방법 2017-02-17 20:32:52
[Laravel5] timestamps(updated_at column)를 touch하지 않고 update하는 방법 2017-02-09 16:31:18
[Laravel5] altisan command 사용법 요약 2017-02-02 21:38:55