diff --git a/HttpServer/Events/OnRequest.php b/HttpServer/Events/OnRequest.php index c335c562..97c938fc 100644 --- a/HttpServer/Events/OnRequest.php +++ b/HttpServer/Events/OnRequest.php @@ -63,7 +63,7 @@ class OnRequest extends Callback */ protected function sendErrorMessage($sResponse, $exception, $response) { - $params = $this->format($exception); + $params = Snowflake::app()->getLogger()->exception($exception); if (empty($sResponse)) { $sResponse = \response(); $sResponse->response = $response; @@ -72,36 +72,6 @@ class OnRequest extends Callback } - /** - * @param Exception $exception - * @return false|int|mixed|string - * @throws Exception - */ - public function format($exception) - { - $errorInfo = [ - 'message' => $exception->getMessage(), - 'file' => $exception->getFile(), - 'line' => $exception->getLine() - ]; - $this->error(var_export($errorInfo, true)); - - $code = $exception->getCode() ?? 500; - - $logger = Snowflake::app()->logger; - - $string = 'Exception: ' . PHP_EOL; - $string .= '#. message: ' . $errorInfo['message'] . PHP_EOL; - $string .= '#. file: ' . $errorInfo['file'] . PHP_EOL; - $string .= '#. line: ' . $errorInfo['line'] . PHP_EOL; - - $logger->write($string . $exception->getTraceAsString(), 'trace'); - $logger->write(jTraceEx($exception), 'exception'); - - return JSON::to($code, $errorInfo['message']); - } - - /** * @param $request * @param $response diff --git a/HttpServer/Route/Router.php b/HttpServer/Route/Router.php index e7cdd462..a3ee4331 100644 --- a/HttpServer/Route/Router.php +++ b/HttpServer/Route/Router.php @@ -425,11 +425,7 @@ class Router extends Application implements RouterInterface $response = send($node->dispatch(), 200); } } catch (\Throwable $exception) { - $trance = JSON::to(500, $exception->getMessage(), [ - 'file' => $exception->getFile(), - 'line' => $exception->getLine() - ]); - $response = send($trance, 200); + $response = send(Snowflake::app()->getLogger()->exception($exception), 200); } finally { if (!($node instanceof Node) || !$node->hasAfter()) { return; diff --git a/System/Error/Logger.php b/System/Error/Logger.php index ce9c7d19..da6a95fc 100644 --- a/System/Error/Logger.php +++ b/System/Error/Logger.php @@ -221,6 +221,37 @@ class Logger extends Component return implode(PHP_EOL, $_tmp); } + + /** + * @param Exception $exception + * @return false|int|mixed|string + * @throws Exception + */ + public function exception($exception) + { + $errorInfo = [ + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine() + ]; + $this->error(var_export($errorInfo, true)); + + $code = $exception->getCode() ?? 500; + + $logger = Snowflake::app()->logger; + + $string = 'Exception: ' . PHP_EOL; + $string .= '#. message: ' . $errorInfo['message'] . PHP_EOL; + $string .= '#. file: ' . $errorInfo['file'] . PHP_EOL; + $string .= '#. line: ' . $errorInfo['line'] . PHP_EOL; + + $logger->write($string . $exception->getTraceAsString(), 'trace'); + $logger->write(jTraceEx($exception), 'exception'); + + return JSON::to($code, $errorInfo['message']); + } + + /** * @param Exception $exception * @return array