diff options
-rw-r--r-- | slog/slog.py | 9 | ||||
-rw-r--r-- | 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') |