diff --git a/ddtrace/internal/writer/writer.py b/ddtrace/internal/writer/writer.py index 0ab18c24aef..d126079c2ab 100644 --- a/ddtrace/internal/writer/writer.py +++ b/ddtrace/internal/writer/writer.py @@ -16,7 +16,6 @@ from ddtrace import config from ddtrace.internal.utils.retry import fibonacci_backoff_with_jitter from ddtrace.settings.asm import config as asm_config -from ddtrace.vendor.dogstatsd import DogStatsd from ...constants import _KEEP_SPANS_RATE_KEY from ...internal.utils.formats import parse_tags_str @@ -44,6 +43,7 @@ from typing import Tuple # noqa:F401 from ddtrace.trace import Span # noqa:F401 + from ddtrace.vendor.dogstatsd import DogStatsd from .agent import ConnectionType # noqa:F401 @@ -145,7 +145,7 @@ def __init__( buffer_size: Optional[int] = None, max_payload_size: Optional[int] = None, timeout: Optional[float] = None, - dogstatsd: Optional[DogStatsd] = None, + dogstatsd: Optional["DogStatsd"] = None, sync_mode: bool = False, reuse_connections: Optional[bool] = None, headers: Optional[Dict[str, str]] = None, @@ -438,7 +438,7 @@ def __init__( buffer_size: Optional[int] = None, max_payload_size: Optional[int] = None, timeout: Optional[float] = None, - dogstatsd: Optional[DogStatsd] = None, + dogstatsd: Optional["DogStatsd"] = None, report_metrics: bool = True, sync_mode: bool = False, api_version: Optional[str] = None, diff --git a/ddtrace/vendor/__init__.py b/ddtrace/vendor/__init__.py index c8487e48a8c..4b9a6c9d4f9 100644 --- a/ddtrace/vendor/__init__.py +++ b/ddtrace/vendor/__init__.py @@ -93,12 +93,15 @@ Changed "-" to "_" as was causing errors when importing. """ -# Initialize `ddtrace.vendor.datadog.base.log` logger with our custom rate limited logger -# DEV: This helps ensure if there are connection issues we do not spam their logs -# DEV: Overwrite `base.log` instead of `get_logger('datadog.dogstatsd')` so we do -# not conflict with any non-vendored datadog.dogstatsd logger -from ..internal.logger import get_logger -from .dogstatsd import base +from ddtrace.internal.module import ModuleWatchdog -base.log = get_logger("ddtrace.vendor.dogstatsd") +@ModuleWatchdog.after_module_imported("ddtrace.vendor.dogstatsd.base") +def _(base): + # Initialize `ddtrace.vendor.datadog.base.log` logger with our custom rate limited logger + # DEV: This helps ensure if there are connection issues we do not spam their logs + # DEV: Overwrite `base.log` instead of `get_logger('datadog.dogstatsd')` so we do + # not conflict with any non-vendored datadog.dogstatsd logger + from ddtrace.internal.logger import get_logger + + base.log = get_logger("ddtrace.vendor.dogstatsd")