| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace App\Providers;
- use Illuminate\Database\Events\QueryExecuted;
- use Illuminate\Support\Facades\DB;
- use UCore\Helper\Logger;
- use Illuminate\Support\ServiceProvider;
- use UCore\Trace;
- class SqlLogServiceProvider extends ServiceProvider
- {
- /**
- * 注册服务
- */
- public function register(): void
- {
- //
- }
- /**
- * 启动服务
- */
- public function boot(): void
- {
- // 只在非生产环境下记录SQL查询
- if (app()->environment('local', 'development', 'testing')) {
- DB::listen(function (QueryExecuted $query) {
- $sql = $query->sql;
- // 替换绑定参数
- foreach ($query->bindings as $binding) {
- $value = is_numeric($binding) ? $binding : "'{$binding}'";
- $sql = preg_replace('/\?/', $value, $sql, 1);
- }
- Trace::applyData('sql',[
- 'sql' => $sql,
- 'time' => "{$query->time}ms",
- 'connection' => $query->connectionName
- ]);
- // 使用UCore\Helper\Logger记录SQL查询、执行时间和连接名称
- Logger::debug('SQL', [
- 'sql' => $sql,
- 'time' => "{$query->time}ms",
- 'connection' => $query->connectionName
- ]);
- });
- }
- }
- }
|