From ad757805ca3c6556dd912881d5469b97b1f66171 Mon Sep 17 00:00:00 2001 From: Christoph Wurst 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 --- 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 6b97a3a028..a41c728df0 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 bdf18b492f..e90e82958d 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 66c527092b..62432c782a 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 03c4f47e3b..4700f275df 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 76f33849de..54336da105 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);