在监听中添加SqlListener,并且写入日志,在 \App\Providers\EventServiceProvider 中添加注册
protected $listen = [
// 新增SqlListener监听QueryExecuted
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\SqlListener',
],
];
<?php
namespace App\Listeners;
use Log;
use Illuminate\Database\Events\QueryExecuted;
class SqlListener
{
public function handle(QueryExecuted $event)
{
// 在这里编写业务逻辑
$sql = str_replace("?", "'%s'", $event->sql);
$sql = str_replace("%", "'%%'", $event->sql);
$log = vsprintf($sql, $event->bindings);
$date = date('Y-m-d');
$log = '[' . date('Y-m-d H:i:s') . '] ' . $log . "\r\n";
$filepath = storage_path('logs/sql-' . $date . '.log');
file_put_contents($filepath, $log, FILE_APPEND);
}
}