From cea32ea333799f9c2943be963c8972c2004a1c56 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Wed, 25 May 2016 21:57:55 +0200 Subject: [PATCH] log: embed traceback in json object --- qutebrowser/utils/log.py | 2 ++ tests/end2end/fixtures/quteprocess.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 1a25176ea..ba01ad894 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -557,4 +557,6 @@ class JSONFormatter(logging.Formatter): 'lineno', 'levelno']: obj[field] = getattr(record, field) obj['message'] = record.getMessage() + if record.exc_info is not None: + obj['traceback'] = super().formatException(record.exc_info) return json.dumps(obj) diff --git a/tests/end2end/fixtures/quteprocess.py b/tests/end2end/fixtures/quteprocess.py index ab26e68ca..bf671c5fb 100644 --- a/tests/end2end/fixtures/quteprocess.py +++ b/tests/end2end/fixtures/quteprocess.py @@ -81,6 +81,7 @@ class LogLine(testprocess.Line): self.module = line['module'] self.function = line['funcName'] self.line = line['lineno'] + self.traceback = line.get('traceback') self.full_message = line['message'] msg_match = re.match(r'^(\[(?P\d+s ago)\] )?(?P.*)', @@ -121,7 +122,10 @@ class LogLine(testprocess.Line): format_dict['log_color'] = '' format_dict['reset'] = '' format_dict.update({color: '' for color in color_names}) - return log.EXTENDED_FMT.format_map(format_dict) + result = log.EXTENDED_FMT.format_map(format_dict) + if self.traceback is not None: + result += '\n' + self.traceback + return result class QuteProc(testprocess.Process):