From 68366fa685b9931c456a97dfa123acdc428438ea Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Tue, 15 Jun 2021 02:28:05 +0200 Subject: [PATCH] [enh] add console.format_exception and use it --- moulinette/__init__.py | 11 +++++++++++ moulinette/interfaces/api.py | 6 ++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/moulinette/__init__.py b/moulinette/__init__.py index 66c1bd0d..b4f2e06e 100755 --- a/moulinette/__init__.py +++ b/moulinette/__init__.py @@ -50,6 +50,17 @@ console = Console() # pretty traceback using rich traceback.install(show_locals=True, extra_lines=6) + +# nice helper function for common usecase +def _format_exception(): + with console.capture() as capture: + console.print_exception() + + return capture.get() + + +console.format_exception = _format_exception + # Package functions diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 3a61939b..9973fc79 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -13,7 +13,7 @@ from geventwebsocket import WebSocketError from bottle import request, response, Bottle, HTTPResponse from bottle import abort -from moulinette import msignals, m18n, env +from moulinette import msignals, m18n, env, console from moulinette.actionsmap import ActionsMap from moulinette.core import MoulinetteError, MoulinetteValidationError from moulinette.interfaces import ( @@ -487,10 +487,8 @@ class _ActionsMapPlugin(object): except Exception as e: if isinstance(e, HTTPResponse): raise e - import traceback - tb = traceback.format_exc() - logs = {"route": _route, "arguments": arguments, "traceback": tb} + logs = {"route": _route, "arguments": arguments, "traceback": console.format_traceback()} return HTTPResponse(json_encode(logs), 500) else: return format_for_response(ret)