From 10f789e16aae96937cb6490880568fd7ed89962d Mon Sep 17 00:00:00 2001 From: Oli Salisbury <12654315+ol1s@users.noreply.github.com> Date: Thu, 24 Jul 2025 11:55:43 +0100 Subject: [PATCH] Update LogWatcher.php --- src/Watchers/LogWatcher.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Watchers/LogWatcher.php b/src/Watchers/LogWatcher.php index 65b5751..e74387f 100644 --- a/src/Watchers/LogWatcher.php +++ b/src/Watchers/LogWatcher.php @@ -10,6 +10,8 @@ use OpenTelemetry\API\Instrumentation\CachedInstrumentation; use OpenTelemetry\API\Logs\LogRecord; use OpenTelemetry\API\Logs\Severity; +use OpenTelemetry\SDK\Common\Exception\StackTraceFormatter; +use Throwable; use TypeError; class LogWatcher extends Watcher @@ -54,6 +56,7 @@ public function recordLog(MessageLogged $log): void $attributes = [ 'context' => json_encode(array_filter($log->context)), + ...$this->parseExceptionFromContext($log->context), ]; $logger = $this->instrumentation->logger(); @@ -65,4 +68,22 @@ public function recordLog(MessageLogged $log): void $logger->emit($record); } + + private function parseExceptionFromContext(array $context): array + { + if ( + ! isset($context['exception']) || + ! $context['exception'] instanceof Throwable + ) { + return []; + } + + $exception = $context['exception']; + + return [ + 'exception.type' => $exception::class, + 'exception.message' => $exception->getMessage(), + 'exception.stacktrace' => StackTraceFormatter::format($exception), + ]; + } }