From 6944f7dec33597d58c203b35301d3bfa539d80d1 Mon Sep 17 00:00:00 2001 From: Nik Barham Date: Wed, 13 Dec 2017 16:51:19 +0000 Subject: [PATCH] New ErrorLogger middleware --- src/Middleware/ErrorLogger.php | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Middleware/ErrorLogger.php diff --git a/src/Middleware/ErrorLogger.php b/src/Middleware/ErrorLogger.php new file mode 100644 index 0000000..08d2431 --- /dev/null +++ b/src/Middleware/ErrorLogger.php @@ -0,0 +1,47 @@ + + */ +class ErrorLogger implements Middleware +{ + /** + * Constructor + * + * @param LoggerInterface $log Logger to log error to + */ + public function __construct(LoggerInterface $log) + { + $this->log = $log; + } + + /** + * Run Middleware for a particular request + * + * @param Request $request HTTP Foundation Request object + * @param Delegate $delegate Either the Router or HandlerContainer, depending on whether this is run pre or post + * routing + * @return Response + */ + public function process(Request $request, Delegate $delegate) : Response + { + try { + return $delegate->process($request); + } catch (\Throwable $e) { + $this->log->error($e->getMessage(), ['trace' => $e->getTrace(), 'line' => $e->getLine(), 'file' => $e->getFile(), 'code' => $e->getCode()]); + throw $e; + } + } +}