summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-10-06 17:31:01 +0300
committerLars Wirzenius <liw@liw.fi>2017-10-06 17:31:01 +0300
commitf95e72a347dd891b8542da4156c9578ed91c7a00 (patch)
tree42044ae9125857c21874c0cc2122ad3f792d05b7
parentb71f7c8668d2aeedbc3a1fb4a5f0fb0dcd588503 (diff)
downloadslog-f95e72a347dd891b8542da4156c9578ed91c7a00.tar.gz
Add: log non-JSON data using repr()
-rw-r--r--slog/slog.py9
-rw-r--r--slog/slog_tests.py11
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')