From d16c7134b288add2a4aef1d775ad389ab5b82e80 Mon Sep 17 00:00:00 2001 From: Matt Snider Date: Mon, 17 Oct 2016 17:10:11 +0200 Subject: [PATCH 1/2] Use str() when json.dumps() finds an unserializable record --- logstash/formatter.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/logstash/formatter.py b/logstash/formatter.py index f5c4424..3c8a84d 100644 --- a/logstash/formatter.py +++ b/logstash/formatter.py @@ -79,10 +79,10 @@ def format_exception(cls, exc_info): @classmethod def serialize(cls, message): - if sys.version_info < (3, 0): - return json.dumps(message) - else: - return bytes(json.dumps(message), 'utf-8') + data = json.dumps(message, default=str) + if sys.version_info >= (3, 0): + data = bytes(data, 'utf-8') + return data class LogstashFormatterVersion0(LogstashFormatterBase): version = 0 From 2301699417d1dadcee591439c689ace1b7b280e2 Mon Sep 17 00:00:00 2001 From: Matt Snider Date: Mon, 17 Oct 2016 17:46:51 +0200 Subject: [PATCH 2/2] Remove type conversions in LogstashFormatterBase.get_extra_fields() --- logstash/formatter.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/logstash/formatter.py b/logstash/formatter.py index 3c8a84d..be09163 100644 --- a/logstash/formatter.py +++ b/logstash/formatter.py @@ -29,21 +29,10 @@ def get_extra_fields(self, record): 'msecs', 'msecs', 'message', 'msg', 'name', 'pathname', 'process', 'processName', 'relativeCreated', 'thread', 'threadName', 'extra', 'auth_token', 'password') - - if sys.version_info < (3, 0): - easy_types = (basestring, bool, dict, float, int, long, list, type(None)) - else: - easy_types = (str, bool, dict, float, int, list, type(None)) - fields = {} - for key, value in record.__dict__.items(): if key not in skip_list: - if isinstance(value, easy_types): - fields[key] = value - else: - fields[key] = repr(value) - + fields[key] = value return fields def get_debug_fields(self, record):