diff --git a/logging_utilities/formatters/json_formatter.py b/logging_utilities/formatters/json_formatter.py index 9469efc..5a67fb4 100644 --- a/logging_utilities/formatters/json_formatter.py +++ b/logging_utilities/formatters/json_formatter.py @@ -349,14 +349,14 @@ def format(self, record): if not record.exc_text: record.exc_text = self.formatException(record.exc_info) + if record.stack_info: + record.stack_info = self.formatStack(record.stack_info) + message = self.formatMessage(record) if self.add_always_extra: self._add_extra_to_message(extra, message) - if record.stack_info: - message['stack_info'] = self.formatStack(record.stack_info) - # When adding all extras, to avoid crash when a log message adds an extra with a non # serializable object, we add a default serializer. default = self.kwargs.pop('default', None) diff --git a/tests/test_json_formatter.py b/tests/test_json_formatter.py index 91fdba0..f765d36 100644 --- a/tests/test_json_formatter.py +++ b/tests/test_json_formatter.py @@ -378,11 +378,8 @@ def test_stack_info(self): logger = logging.getLogger('test_formatter') self._configure_logger( logger, - fmt=dictionary([ - ('levelname', 'levelname'), - ('name', 'name'), - ('message', 'message'), - ]) + fmt=dictionary([('levelname', 'levelname'), ('name', 'name'), + ('message', 'message'), ('stack_info', 'stack_info')]) ) logger.info('Message with stack info', stack_info=True) message = json.loads(ctx.output[0], object_pairs_hook=dictionary)