diff --git a/src/Event.php b/src/Event.php index a11e407c0a..de3acef590 100644 --- a/src/Event.php +++ b/src/Event.php @@ -61,6 +61,11 @@ final class Event implements \JsonSerializable */ private $message; + /** + * @var string|null The formatted error message + */ + private $messageFormatted; + /** * @var array The parameters to use to format the message */ @@ -339,6 +344,16 @@ public function getMessage(): ?string return $this->message; } + /** + * Gets the formatted message. + * + * @return string|null + */ + public function getMessageFormatted(): ?string + { + return $this->messageFormatted; + } + /** * Gets the parameters to use to format the message. * @@ -352,13 +367,15 @@ public function getMessageParams(): array /** * Sets the error message. * - * @param string $message The message - * @param array $params The parameters to use to format the message + * @param string $message The message + * @param array $params The parameters to use to format the message + * @param string|null $formatted The formatted message */ - public function setMessage(string $message, array $params = []): void + public function setMessage(string $message, array $params = [], string $formatted = null): void { $this->message = $message; $this->messageParams = $params; + $this->messageFormatted = $formatted; } /** @@ -659,7 +676,7 @@ public function toArray(): array $data['message'] = [ 'message' => $this->message, 'params' => $this->messageParams, - 'formatted' => vsprintf($this->message, $this->messageParams), + 'formatted' => $this->messageFormatted ?? vsprintf($this->message, $this->messageParams), ]; } } diff --git a/src/EventFactory.php b/src/EventFactory.php index 153bed5749..d74ba5fb3f 100644 --- a/src/EventFactory.php +++ b/src/EventFactory.php @@ -108,9 +108,10 @@ public function create(array $payload): Event $message = $payload['message'] ?? null; $messageParams = $payload['message_params'] ?? []; + $messageFormatted = isset($payload['message_formatted']) ? mb_substr($payload['message_formatted'], 0, Client::MESSAGE_MAX_LENGTH_LIMIT) : null; if (null !== $message) { - $event->setMessage(substr($message, 0, Client::MESSAGE_MAX_LENGTH_LIMIT), $messageParams); + $event->setMessage(mb_substr($message, 0, Client::MESSAGE_MAX_LENGTH_LIMIT), $messageParams, $messageFormatted); } if (isset($payload['exception']) && $payload['exception'] instanceof \Throwable) {