diff --git a/Slim/Handlers/ErrorHandler.php b/Slim/Handlers/ErrorHandler.php index f1975b533..7dd553caf 100644 --- a/Slim/Handlers/ErrorHandler.php +++ b/Slim/Handlers/ErrorHandler.php @@ -53,6 +53,11 @@ class ErrorHandler implements ErrorHandlerInterface 'text/plain' => PlainTextErrorRenderer::class, ]; + /** + * @var ErrorRendererInterface|string|callable + */ + protected $logErrorRenderer = PlainTextErrorRenderer::class; + /** * @var bool */ @@ -259,6 +264,16 @@ public function setDefaultErrorRenderer(string $contentType, $errorRenderer): vo $this->defaultErrorRenderer = $errorRenderer; } + /** + * Set the renderer for the error logger + * + * @param ErrorRendererInterface|string|callable $logErrorRenderer + */ + public function setLogErrorRenderer($logErrorRenderer): void + { + $this->logErrorRenderer = $logErrorRenderer; + } + /** * Write to the error log if $logErrors has been set to true * @@ -266,7 +281,8 @@ public function setDefaultErrorRenderer(string $contentType, $errorRenderer): vo */ protected function writeToErrorLog(): void { - $renderer = new PlainTextErrorRenderer(); + /** @var ErrorRendererInterface $renderer */ + $renderer = $this->callableResolver->resolve($this->logErrorRenderer); $error = $renderer->__invoke($this->exception, $this->logErrorDetails); $error .= "\nView in rendered output by enabling the \"displayErrorDetails\" setting.\n"; $this->logError($error);