From 70fb8899ce11ed0c0b4e2f3dbf0e214380f19d4f Mon Sep 17 00:00:00 2001 From: Dimitri Gritsajuk Date: Sun, 14 Apr 2019 00:28:38 +0200 Subject: [PATCH 1/4] Add query backtrace logger --- lib/Doctrine/DBAL/Logging/BacktraceLogger.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/Doctrine/DBAL/Logging/BacktraceLogger.php diff --git a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php new file mode 100644 index 00000000000..2ab07fbc8ea --- /dev/null +++ b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php @@ -0,0 +1,24 @@ +queries[$this->currentQuery]['backtrace'] = array_reverse(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)); + } + + /** + * {@inheritdoc} + */ + public function stopQuery() + { + parent::stopQuery(); + } +} From 94ac0d807b383f9a7e0e6e49e9434a38c76b50be Mon Sep 17 00:00:00 2001 From: Dimitri Gritsajuk Date: Mon, 15 Apr 2019 23:26:46 +0200 Subject: [PATCH 2/4] Add test & fix review --- lib/Doctrine/DBAL/Logging/BacktraceLogger.php | 10 +------- .../DBAL/Logging/BacktraceLoggerTest.php | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php diff --git a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php index 2ab07fbc8ea..8e95590ba74 100644 --- a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php +++ b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php @@ -11,14 +11,6 @@ public function startQuery($sql, ?array $params = null, ?array $types = null) { parent::startQuery($sql, $params, $types); - $this->queries[$this->currentQuery]['backtrace'] = array_reverse(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)); - } - - /** - * {@inheritdoc} - */ - public function stopQuery() - { - parent::stopQuery(); + $this->queries[$this->currentQuery]['backtrace'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); } } diff --git a/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php b/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php new file mode 100644 index 00000000000..9e865ef7ef0 --- /dev/null +++ b/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php @@ -0,0 +1,23 @@ +startQuery('SELECT column FROM table'); + + $currentQuery = current($logger->queries); + + self::assertSame('SELECT column FROM table', $currentQuery['sql']); + self::assertNull($currentQuery['params']); + self::assertNull($currentQuery['types']); + self::assertIsArray($currentQuery['backtrace']); + } +} From 23b8596e03704e0ac6cf56e84b07f8b929e20479 Mon Sep 17 00:00:00 2001 From: Dimitri Gritsajuk Date: Tue, 16 Apr 2019 00:14:58 +0200 Subject: [PATCH 3/4] Fix CS --- lib/Doctrine/DBAL/Logging/BacktraceLogger.php | 3 +++ tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php index 8e95590ba74..15c52088af7 100644 --- a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php +++ b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php @@ -2,6 +2,9 @@ namespace Doctrine\DBAL\Logging; +use const DEBUG_BACKTRACE_IGNORE_ARGS; +use function debug_backtrace; + class BacktraceLogger extends DebugStack { /** diff --git a/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php b/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php index 9e865ef7ef0..fe91ab4cd6d 100644 --- a/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php +++ b/tests/Doctrine/Tests/DBAL/Logging/BacktraceLoggerTest.php @@ -4,6 +4,7 @@ use Doctrine\DBAL\Logging\BacktraceLogger; use Doctrine\Tests\DbalTestCase; +use function current; class BacktraceLoggerTest extends DbalTestCase { From 73dea47b46b193de5ee4558476d22c4b291a3903 Mon Sep 17 00:00:00 2001 From: Dimitri Gritsajuk Date: Tue, 16 Apr 2019 09:41:25 +0200 Subject: [PATCH 4/4] Skip first line of backtrace --- lib/Doctrine/DBAL/Logging/BacktraceLogger.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php index 15c52088af7..371f70faa1c 100644 --- a/lib/Doctrine/DBAL/Logging/BacktraceLogger.php +++ b/lib/Doctrine/DBAL/Logging/BacktraceLogger.php @@ -3,6 +3,7 @@ namespace Doctrine\DBAL\Logging; use const DEBUG_BACKTRACE_IGNORE_ARGS; +use function array_shift; use function debug_backtrace; class BacktraceLogger extends DebugStack @@ -14,6 +15,11 @@ public function startQuery($sql, ?array $params = null, ?array $types = null) { parent::startQuery($sql, $params, $types); - $this->queries[$this->currentQuery]['backtrace'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + + // skip first since it's always the current method + array_shift($backtrace); + + $this->queries[$this->currentQuery]['backtrace'] = $backtrace; } }