From ad757805ca3c6556dd912881d5469b97b1f66171 Mon Sep 17 00:00:00 2001 From: Christoph Wurst <christoph@winzerhof-wurst.at> Date: Tue, 14 Nov 2017 14:28:04 +0100 Subject: [PATCH] Pass the exception context to the crash reporter This should allow better reports as often the app id is passed as context. While this is not used right now, I'd like to have this for NC13 as adding it later will break the interface for existing apps Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at> --- lib/private/Log.php | 2 +- lib/private/Support/CrashReport/Registry.php | 5 +++-- lib/public/Support/CrashReport/IRegistry.php | 3 ++- lib/public/Support/CrashReport/IReporter.php | 3 ++- tests/lib/LoggerTest.php | 8 ++++---- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/private/Log.php b/lib/private/Log.php index 6b97a3a028e..a41c728df0d 100644 --- a/lib/private/Log.php +++ b/lib/private/Log.php @@ -352,7 +352,7 @@ class Log implements ILogger { $msg .= ': ' . json_encode($data); $this->log($level, $msg, $context); if (!is_null($this->crashReporters)) { - $this->crashReporters->delegateReport($exception); + $this->crashReporters->delegateReport($exception, $context); } } diff --git a/lib/private/Support/CrashReport/Registry.php b/lib/private/Support/CrashReport/Registry.php index bdf18b492fd..e90e82958d1 100644 --- a/lib/private/Support/CrashReport/Registry.php +++ b/lib/private/Support/CrashReport/Registry.php @@ -45,10 +45,11 @@ class Registry implements IRegistry { * Delegate crash reporting to all registered reporters * * @param Exception|Throwable $exception + * @param array $context */ - public function delegateReport($exception) { + public function delegateReport($exception, array $context = []) { foreach ($this->reporters as $reporter) { - $reporter->report($exception); + $reporter->report($exception, $context); } } diff --git a/lib/public/Support/CrashReport/IRegistry.php b/lib/public/Support/CrashReport/IRegistry.php index 66c527092bb..62432c782ab 100644 --- a/lib/public/Support/CrashReport/IRegistry.php +++ b/lib/public/Support/CrashReport/IRegistry.php @@ -43,6 +43,7 @@ interface IRegistry { * * @since 13.0.0 * @param Exception|Throwable $exception + * @param array $context */ - public function delegateReport($exception); + public function delegateReport($exception, array $context = []); } diff --git a/lib/public/Support/CrashReport/IReporter.php b/lib/public/Support/CrashReport/IReporter.php index 03c4f47e3b2..4700f275df4 100644 --- a/lib/public/Support/CrashReport/IReporter.php +++ b/lib/public/Support/CrashReport/IReporter.php @@ -35,6 +35,7 @@ interface IReporter { * * @since 13.0.0 * @param Exception|Throwable $exception + * @param array $context */ - public function report($exception); + public function report($exception, array $context = []); } diff --git a/tests/lib/LoggerTest.php b/tests/lib/LoggerTest.php index 76f33849deb..54336da105c 100644 --- a/tests/lib/LoggerTest.php +++ b/tests/lib/LoggerTest.php @@ -90,7 +90,7 @@ class LoggerTest extends TestCase { $e = new \Exception('test'); $this->registry->expects($this->once()) ->method('delegateReport') - ->with($e); + ->with($e, []); $this->logger->logException($e); @@ -109,7 +109,7 @@ class LoggerTest extends TestCase { $e = new \Exception('test'); $this->registry->expects($this->once()) ->method('delegateReport') - ->with($e); + ->with($e, []); $this->logger->logException($e); @@ -128,7 +128,7 @@ class LoggerTest extends TestCase { $e = new \Exception('test'); $this->registry->expects($this->once()) ->method('delegateReport') - ->with($e); + ->with($e, []); $this->logger->logException($e); @@ -147,7 +147,7 @@ class LoggerTest extends TestCase { $e = new \Exception('test'); $this->registry->expects($this->once()) ->method('delegateReport') - ->with($e); + ->with($e, []); $this->logger->logException($e); -- GitLab