From 18e587437ee61a3285223685bb99a8ce8f284764 Mon Sep 17 00:00:00 2001 From: Bjoern Boschman Date: Wed, 29 Jan 2020 11:58:55 +0000 Subject: [PATCH 1/2] added method to sanitize json incompatible input --- logstash/formatter.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/logstash/formatter.py b/logstash/formatter.py index 998d6ee..536ad77 100644 --- a/logstash/formatter.py +++ b/logstash/formatter.py @@ -78,8 +78,35 @@ def format_exception(cls, exc_info): @classmethod def serialize(cls, message): + message = self.fix_log_message(message) return json.dumps(message) + @classmethod + def json_sanitize_message(cls, message): + if type(message) is dict: + message=message.copy() + for k, v in message.items(): + message[k] = self.json_sanitize_message(v) + return message + + elif type(message) in (list, ): + message=list(message) + for i in range(len(message)): + message[i] = self.json_sanitize_message(message[i]) + return message + + elif type(message) in (datetime.datetime, datetime.date): + return message.isoformat() + + elif type(message) is ObjectId: + return str(message) + + elif type(message) is bytes: + return str(message) + + return message + + class LogstashFormatterVersion0(LogstashFormatterBase): version = 0 From ac697cddc9302e32f369a38debb7ee42e9b7f0b6 Mon Sep 17 00:00:00 2001 From: Bjoern Boschman Date: Wed, 29 Jan 2020 11:59:51 +0000 Subject: [PATCH 2/2] maybe I should use the correct method name ;-) --- logstash/formatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logstash/formatter.py b/logstash/formatter.py index 536ad77..914022d 100644 --- a/logstash/formatter.py +++ b/logstash/formatter.py @@ -78,7 +78,7 @@ def format_exception(cls, exc_info): @classmethod def serialize(cls, message): - message = self.fix_log_message(message) + message = self.json_sanitize_message(message) return json.dumps(message) @classmethod