From f95e72a347dd891b8542da4156c9578ed91c7a00 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 6 Oct 2017 17:31:01 +0300 Subject: Add: log non-JSON data using repr() --- slog/slog.py | 9 +++++---- slog/slog_tests.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/slog/slog.py b/slog/slog.py index b3725dd..a4d57a7 100644 --- a/slog/slog.py +++ b/slog/slog.py @@ -111,10 +111,11 @@ class StructuredLog: } value_type = type(value) - assert value_type in converters, \ - 'Unknown data type {}'.format(value_type) - func = converters[type(value)] - converted = func(value) + if value_type not in converters: + converted = repr(value) + else: + func = converters[type(value)] + converted = func(value) return converted def _nop_conversion(self, value): diff --git a/slog/slog_tests.py b/slog/slog_tests.py index 04f1cf4..f2462eb 100644 --- a/slog/slog_tests.py +++ b/slog/slog_tests.py @@ -62,6 +62,17 @@ class StructuredLogTests(unittest.TestCase): self.assertEqual(obj['bar'], 'bar') self.assertEqual(obj['number'], 12765) + def test_logs_non_json_data_in_json(self): + log, writer, _ = self.create_structured_log() + log.log('testmsg', func=lambda: None) + log.close() + + objs = self.read_log_entries(writer) + self.assertEqual(len(objs), 1) + obj = objs[0] + self.assertEqual(obj['msg_type'], 'testmsg') + self.assertTrue(isinstance(obj['func'], str)) + def test_logs_two_lines_in_json(self): log, writer, _ = self.create_structured_log() log.log('testmsg1', foo='foo') -- cgit v1.2.1