From f15584824330032b94faae0bdcb93a104820071a Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Tue, 9 Oct 2018 13:26:09 +0200 Subject: [PATCH 1/2] feat: Add debug log support in client init --- sentry_sdk/client.py | 33 ++++++++++++++++++----------- sentry_sdk/debug.py | 3 +++ sentry_sdk/integrations/__init__.py | 8 +++++++ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 5094e17597..653aa8b2a7 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -17,6 +17,10 @@ from sentry_sdk.transport import make_transport from sentry_sdk.consts import DEFAULT_OPTIONS, SDK_INFO from sentry_sdk.integrations import setup_integrations +from sentry_sdk.utils import ContextVar + + +_client_init_debug = ContextVar("client_init_debug", default=False) def get_options(*args, **kwargs): @@ -50,20 +54,25 @@ class Client(object): """ def __init__(self, *args, **kwargs): - self.options = options = get_options(*args, **kwargs) - self.transport = make_transport(options) - - request_bodies = ("always", "never", "small", "medium") - if options["request_bodies"] not in request_bodies: - raise ValueError( - "Invalid value for request_bodies. Must be one of {}".format( - request_bodies + old_debug = _client_init_debug.get() + try: + self.options = options = get_options(*args, **kwargs) + _client_init_debug.set(options["debug"]) + self.transport = make_transport(options) + + request_bodies = ("always", "never", "small", "medium") + if options["request_bodies"] not in request_bodies: + raise ValueError( + "Invalid value for request_bodies. Must be one of {}".format( + request_bodies + ) ) - ) - self.integrations = setup_integrations( - options["integrations"], with_defaults=options["default_integrations"] - ) + self.integrations = setup_integrations( + options["integrations"], with_defaults=options["default_integrations"] + ) + finally: + _client_init_debug.set(old_debug) @property def dsn(self): diff --git a/sentry_sdk/debug.py b/sentry_sdk/debug.py index b524501a9a..36cee449e4 100644 --- a/sentry_sdk/debug.py +++ b/sentry_sdk/debug.py @@ -4,10 +4,13 @@ from sentry_sdk import utils from sentry_sdk.hub import Hub from sentry_sdk.utils import logger +from sentry_sdk.client import _client_init_debug class _HubBasedClientFilter(logging.Filter): def filter(self, record): + if _client_init_debug.get(): + return True hub = Hub.current if hub is not None and hub.client is not None: return hub.client.options["debug"] diff --git a/sentry_sdk/integrations/__init__.py b/sentry_sdk/integrations/__init__.py index fb97e0ad10..f1b69766d3 100644 --- a/sentry_sdk/integrations/__init__.py +++ b/sentry_sdk/integrations/__init__.py @@ -44,6 +44,8 @@ def setup_integrations(integrations, with_defaults=True): (integration.identifier, integration) for integration in integrations or () ) + logger.debug("Setting up integrations (with default = %s)", with_defaults) + if with_defaults: for integration_cls in iter_default_integrations(): if integration_cls.identifier not in integrations: @@ -53,6 +55,9 @@ def setup_integrations(integrations, with_defaults=True): for identifier, integration in iteritems(integrations): with _installer_lock: if identifier not in _installed_integrations: + logger.debug( + "Setting up previously not enabled integration %s", identifier + ) try: type(integration).setup_once() except NotImplementedError: @@ -67,6 +72,9 @@ def setup_integrations(integrations, with_defaults=True): raise _installed_integrations.add(identifier) + for identifier in integrations: + logger.debug("Enabling integration %s", identifier) + return integrations From 73bd11f311feb82c958ed6c5048bbb4a32280871 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Fri, 19 Oct 2018 14:51:39 +0200 Subject: [PATCH 2/2] fix: Work around contextvar shim --- sentry_sdk/client.py | 4 ++-- sentry_sdk/debug.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 653aa8b2a7..0b190f5304 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -20,7 +20,7 @@ from sentry_sdk.utils import ContextVar -_client_init_debug = ContextVar("client_init_debug", default=False) +_client_init_debug = ContextVar("client_init_debug") def get_options(*args, **kwargs): @@ -54,7 +54,7 @@ class Client(object): """ def __init__(self, *args, **kwargs): - old_debug = _client_init_debug.get() + old_debug = _client_init_debug.get(False) try: self.options = options = get_options(*args, **kwargs) _client_init_debug.set(options["debug"]) diff --git a/sentry_sdk/debug.py b/sentry_sdk/debug.py index 36cee449e4..5922a50c51 100644 --- a/sentry_sdk/debug.py +++ b/sentry_sdk/debug.py @@ -9,7 +9,7 @@ class _HubBasedClientFilter(logging.Filter): def filter(self, record): - if _client_init_debug.get(): + if _client_init_debug.get(False): return True hub = Hub.current if hub is not None and hub.client is not None: