mitoop / laravel-query-logger
Log executed SQL queries to a Laravel log channel.
v4.0.0
2026-10-31 13:13 UTC
Requires
- php: ^8.2
- illuminate/support: ^11|^12|^13
Requires (Dev)
- laravel/pint: ^1.30
- phpunit/phpunit: ^10.5|^11.5|^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
🔮 轻松记录 SQL 执行日志,助力调试与分析
安装
composer require mitoop/laravel-query-logger
配置
在 config/logging.php 中添加日志频道配置:
<?php return [ 'channels' => [ // 其他日志频道配置... 'sql' => [ 'driver' => 'daily', 'path' => storage_path('logs/sql.log'), 'level' => 'debug', 'permission' => 0664, ], ], // 查询日志相关配置 'query' => [ 'enabled' => env('ENABLE_QUERY_LOG', false), // 总开关,是否启用 SQL 查询日志 'channel' => 'sql', // 日志记录频道 'excluded_tables' => ['telescope_'], // 排除表名,支持前缀匹配 ], ];
使用
默认行为
当 query.enabled 设置为 true 时,包会记录 SQL。日志形如:
[report] [12.5ms] select * from `users` where `id` = 1
时间来自查询耗时,单位按区间显示为 μs、ms 或 s。
自定义触发条件
在 AppServiceProvider 的 boot() 方法中调用 QueryLogger::logWhen()。总开关关闭时不会记录。总开关开启后,闭包在每条 SQL 执行时判断,不会在启动时缓存结果,因此可以读取当前请求:
use Mitoop\LaravelQueryLogger\QueryLogger; public function boot(): void { QueryLogger::logWhen(function () { return app()->isLocal() || request()->cookie('debug_sql') === '9527'; }); }