44
55namespace LaravelBlinkLogger \Providers ;
66
7+ use Carbon \Carbon ;
8+ use DateTime ;
79use Illuminate \Database \Events \QueryExecuted ;
810use Illuminate \Database \Events \TransactionBeginning ;
911use 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