From 1f1682de2946541eb5864c1a8145b1e1117f3be2 Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Fri, 13 Oct 2023 12:23:04 +0200 Subject: [PATCH 1/4] Allow to specify a formatter for the log handler --- logtail/handler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/logtail/handler.py b/logtail/handler.py index e854996..2a2515b 100644 --- a/logtail/handler.py +++ b/logtail/handler.py @@ -26,8 +26,10 @@ def __init__(self, drop_extra_events=DEFAULT_DROP_EXTRA_EVENTS, include_extra_attributes=DEFAULT_INCLUDE_EXTRA_ATTRIBUTES, context=DEFAULT_CONTEXT, - level=logging.NOTSET): + level=logging.NOTSET, + formatter=None): super(LogtailHandler, self).__init__(level=level) + self.formatter = formatter self.source_token = source_token self.host = host self.context = context From 0fb46bb39f80c020babde004518fc71c6789a91a Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Fri, 13 Oct 2023 12:23:07 +0200 Subject: [PATCH 2/4] v0.2.7+agos-1 --- logtail/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/logtail/__init__.py b/logtail/__init__.py index 8fbcf6f..5cc578b 100644 --- a/logtail/__init__.py +++ b/logtail/__init__.py @@ -5,6 +5,6 @@ from .helpers import LogtailContext, DEFAULT_CONTEXT from .formatter import LogtailFormatter -__version__ = '0.2.7' +__version__ = '0.2.7+agos-1' context = DEFAULT_CONTEXT diff --git a/setup.py b/setup.py index 461269b..10322f3 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup -VERSION = '0.2.7' +VERSION = '0.2.7+agos-1' ROOT_DIR = os.path.dirname(__file__) REQUIREMENTS = [ From f1adfffd703c0f2716e13f638eabcac43b660f0e Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Fri, 13 Oct 2023 14:37:52 +0200 Subject: [PATCH 3/4] Ignore structlog's logger object in log record --- logtail/frame.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/logtail/frame.py b/logtail/frame.py index 11738f2..91f1477 100644 --- a/logtail/frame.py +++ b/logtail/frame.py @@ -5,11 +5,18 @@ from os import path import __main__ + +JSON_TYPES = (dict, list, bool, int, float, str) + + def create_frame(record, message, context, include_extra_attributes=False): r = record.__dict__ # Django sends a request object in the record, which is not JSON serializable - if "request" in r and not isinstance(r["request"], (dict, list, bool, int, float, str)) : + if "request" in r and not isinstance(r["request"], JSON_TYPES): del r["request"] + # structlog adds the logger object in the record, which is not JSON serializable + if "_logger" in r and not isinstance(r["_logger"], JSON_TYPES): + del r["_logger"] frame = {} # Python 3 only solution if we ever drop Python 2.7 # frame['dt'] = datetime.utcfromtimestamp(r['created']).replace(tzinfo=timezone.utc).isoformat() From 0463bb56582079b1b2c1b4dc26b54b329397225c Mon Sep 17 00:00:00 2001 From: Borjan Tchakaloff Date: Fri, 13 Oct 2023 14:38:17 +0200 Subject: [PATCH 4/4] v0.2.7+agos-2 --- logtail/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/logtail/__init__.py b/logtail/__init__.py index 5cc578b..a63dfd5 100644 --- a/logtail/__init__.py +++ b/logtail/__init__.py @@ -5,6 +5,6 @@ from .helpers import LogtailContext, DEFAULT_CONTEXT from .formatter import LogtailFormatter -__version__ = '0.2.7+agos-1' +__version__ = '0.2.7+agos-2' context = DEFAULT_CONTEXT diff --git a/setup.py b/setup.py index 10322f3..6e22d27 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup -VERSION = '0.2.7+agos-1' +VERSION = '0.2.7+agos-2' ROOT_DIR = os.path.dirname(__file__) REQUIREMENTS = [