Laravel 提供五种查看 SQL 查询日志的方法:一、请求中动态启用;二、Artisan 命令中输出;三、本地环境全局配置;四、DB::listen() 自定义监听;五、Telescope 可视化查看。

如果您在开发 Laravel 应用时需要查看实际执行的 SQL 语句以辅助调试,可通过启用查询日志功能实现。Laravel 提供了多种方式在不同上下文中开启 SQL 查询日志记录。以下是具体操作方法:
一、在请求生命周期中动态启用查询日志
此方法适用于临时调试单个请求,无需修改配置文件,通过代码在运行时启用日志捕获,并可立即读取已记录的查询。
1、在控制器方法或中间件中调用 DB::enableQueryLog() 启用日志记录。
2、执行任意 Eloquent 查询或 DB 查询(如 User::all() 或 DB::table('users')->get())。
3、调用 DB::getQueryLog() 获取当前请求中所有已执行的 SQL 语句及其绑定参数和执行时间。
二、在 Artisan 命令中启用并输出查询日志
此方法适用于在命令行环境下调试数据库操作,例如在自定义 Artisan 命令中验证查询逻辑与性能。
1、在命令类的 handle() 方法开头插入 DB::enableQueryLog()。
2、执行目标数据库操作(如批量更新、关联查询等)。
3、使用 $this->info(json_encode(DB::getQueryLog(), JSON_PRETTY_PRINT)) 将格式化后的日志输出至终端。
三、在本地环境配置中全局启用查询日志
此方法仅建议在 APP_ENV=local 的开发环境中启用,避免在生产环境造成性能损耗和敏感信息泄露。
1、打开 config/database.php 文件。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
2、定位到所用数据库连接(如 mysql)的配置数组。
3、在该连接配置中添加键值对:'logging' => true(Laravel 10.30+ 支持)或通过监听 DB::listen() 实现等效效果。
四、使用 DB::listen() 监听并记录查询
此方法提供最大灵活性,允许对每条 SQL 执行自定义处理,例如写入文件、过滤特定类型语句或添加上下文标识。
1、在服务提供者(如 AppServiceProvider@register())中注册监听器。
2、调用 DB::listen(function ($query) { ... }),并在闭包内访问 $query->sql、$query->bindings 和 $query->time。
3、将日志内容写入 storage/logs/query.log 或通过 Log::debug() 输出。
五、通过 Telescope 工具可视化查看查询日志
此方法依赖 Laravel Telescope 扩展包,提供 Web 界面实时查看完整查询上下文,包括执行堆栈、绑定参数和响应时间。
1、执行 composer require laravel/telescope --dev 安装包。
2、运行 php artisan telescope:install 并执行迁移。
3、确保 TELESCOPE_ENABLED=true 且应用处于 local 环境,访问 /telescope 查看“Queries”标签页。










