laravel 預設是不記錄查詢日誌的,為了開發過程中 檢視執行的sql日誌,可以採用以下方式
### 事件監聽
-
在 app/Providers/EventServicePorvider.php 檔案中 新增要註冊的事件
protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], 'Illuminate\Database\Events\QueryExecuted' => [ 'App\Listeners\QueryListener', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\LogSuccessfulLogin', ], ];
2 進入cmd ,切換 專案根目錄裡,執行 命令
php artisan event:generate
3 . 編寫 剛建立好的 QueryListener.php 程式碼如下
class QueryListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param illuminate.query $event
* @return void
*/
public function handle(QueryExecuted $event)
{
if($event->sql){
// 把sql 的日誌獨立分開
$fileName = storage_path('logs/sql/'.date('Y-m-d').'.log');
Log::useFiles($fileName,'info');
$sql = str_replace("?", "'%s'", $event->sql);
$log = vsprintf($sql, $event->bindings);
Log::info($log);
}
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結