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; + } + } +}