We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Self-hosted/on-premise
2.19.2
Sentry duplicates log records when you set debug mode via sentry_sdk.init() and configure handler in root logger only.
sentry_sdk.init()
In my project I use structlog so full code example with it
structlog
import logging import sys import structlog LOG_LEVEL = logging.DEBUG def remove_processors_meta( _, __, event_dict, ): del event_dict["_record"] del event_dict["_from_structlog"] event_dict.pop("positional_args", None) return event_dict structlog.configure_once( processors=[ structlog.stdlib.ProcessorFormatter.wrap_for_formatter, ], logger_factory=structlog.stdlib.LoggerFactory(), wrapper_class=structlog.stdlib.BoundLogger, cache_logger_on_first_use=True, ) formatter = structlog.stdlib.ProcessorFormatter( pass_foreign_args=True, processors=[ structlog.stdlib.add_logger_name, structlog.stdlib.add_log_level, structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M:%S", utc=True), structlog.dev.set_exc_info, remove_processors_meta, structlog.dev.ConsoleRenderer( event_key="message", exception_formatter=structlog.dev.better_traceback, ), ], ) handler = logging.StreamHandler(stream=sys.stdout) handler.setFormatter(formatter) root_logger = logging.getLogger() root_logger.addHandler(handler) root_logger.setLevel(LOG_LEVEL) l = logging.getLogger(__name__) l.info("test1", extra={"extra": "one"}) import sentry_sdk # must be after configuration of logging and structlog from sentry_sdk.utils import logger sentry_sdk.init("https://123@localhost/1", debug=True)
Sentry does not write log records via own stream handler and use parent (root) logger configuration
Output:
2025-01-18 06:44:33 [info ] [__main__] event=test1 2025-01-18 06:44:33 [debug ] [sentry_sdk.errors] event=Setting up integrations (with default = True) 2025-01-18 06:44:33 [debug ] [sentry_sdk.errors] event=Did not import default integration sentry_sdk.integrations.anthropic.AnthropicIntegration: Anthropic not installed
[sentry] DEBUG: Setting up integrations (with default = True) 2025-01-18 06:11:54 [debug ] Setting up integrations (with default = True) [sentry_sdk.errors] func_name=setup_integrations module=__init__ pathname=/<...>/.venv/lib/python3.11/site-packages/sentry_sdk/integrations/__init__.py process=69509 process_name=MainProcess thread=8643448640 thread_name=MainThread
In debug.py we should change configuration check and use special logger method to check parent handlers too
debug.py
from this
def init_debug_support(): # type: () -> None if not logger.handlers: configure_logger()
to this
def init_debug_support(): # type: () -> None if not logger.hasHandlers(): # check parent handlers configure_logger()
The text was updated successfully, but these errors were encountered:
Good idea @nkhitrov
Sorry, something went wrong.
No branches or pull requests
How do you use Sentry?
Self-hosted/on-premise
Version
2.19.2
Steps to Reproduce
Sentry duplicates log records when you set debug mode via
sentry_sdk.init()
and configure handler in root logger only.In my project I use
structlog
so full code example with itExpected Result
Sentry does not write log records via own stream handler and use parent (root) logger configuration
Output:
Actual Result
Output:
Possible fix
In
debug.py
we should change configuration check and use special logger method to check parent handlers toofrom this
to this
The text was updated successfully, but these errors were encountered: