记录 sql 查询日志
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 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
推荐文章: