Skip to content

Commit 5333934

Browse files
committed
feat: Legacy SQL Logger
1 parent bc0db55 commit 5333934

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
}
1616
],
1717
"require": {
18-
"php": "^8.1",
19-
"laravel/framework": "^10.15.0"
18+
"php": "^8.0.2",
19+
"laravel/framework": "^9.0"
2020
},
2121
"config": {
2222
"optimize-autoloader": true,

src/Providers/LaravelBlinkLoggerServiceProvider.php

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace LaravelBlinkLogger\Providers;
66

7+
use Carbon\Carbon;
8+
use DateTime;
79
use Illuminate\Database\Events\QueryExecuted;
810
use Illuminate\Database\Events\TransactionBeginning;
911
use Illuminate\Database\Events\TransactionCommitted;
@@ -29,10 +31,14 @@ public function register(): void
2931
);
3032

3133
if (config('blink-logger.sql.enabled')) {
32-
$this->registerSqlLogger();
34+
$this->registerLegacySqlLogger();
3335
}
3436
}
3537

38+
/**
39+
* php >= 8.1.0
40+
* laravel/framework >= 10.15.0
41+
*/
3642
private function registerSqlLogger(): void
3743
{
3844
DB::listen(static function(QueryExecuted $event) {
@@ -54,4 +60,45 @@ private function registerSqlLogger(): void
5460
Event::listen(static fn (TransactionCommitted $event) => Log::debug('COMMIT'));
5561
Event::listen(static fn (TransactionRolledBack $event) => Log::debug('ROLLBACK'));
5662
}
63+
64+
/**
65+
* For laravel/framework version 9.x
66+
* @deprecated
67+
*/
68+
private function registerLegacySqlLogger(): void
69+
{
70+
DB::listen(static function (QueryExecuted $event): void {
71+
$sql = $event->sql;
72+
73+
foreach ($event->bindings as $binding) {
74+
if (is_string($binding)) {
75+
$binding = "'{$binding}'";
76+
} elseif (is_bool($binding)) {
77+
$binding = $binding ? '1' : '0';
78+
} elseif (is_int($binding)) {
79+
$binding = (string) $binding;
80+
} elseif (is_float($binding)) {
81+
$binding = (string) $binding;
82+
} elseif ($binding === null) {
83+
$binding = 'NULL';
84+
} elseif ($binding instanceof Carbon) {
85+
$binding = "'{$binding->toDateTimeString()}'";
86+
} elseif ($binding instanceof DateTime) {
87+
$binding = "'{$binding->format('Y-m-d H:i:s')}'";
88+
}
89+
90+
$sql = preg_replace('/\\?/', $binding, $sql, 1);
91+
}
92+
93+
if ($event->time > config('logging.sql.slow_query_time')) {
94+
Log::warning(sprintf('%.2f ms, SQL: %s;', $event->time, $sql));
95+
} else {
96+
Log::debug(sprintf('%.2f ms, SQL: %s;', $event->time, $sql));
97+
}
98+
});
99+
100+
Event::listen(static fn (TransactionBeginning $event) => Log::debug('START TRANSACTION'));
101+
Event::listen(static fn (TransactionCommitted $event) => Log::debug('COMMIT'));
102+
Event::listen(static fn (TransactionRolledBack $event) => Log::debug('ROLLBACK'));
103+
}
57104
}

0 commit comments

Comments
 (0)