Skip to content

Commit 4e16656

Browse files
authored
[internal] Add rate limited logger (#822)
* [internal] Add rate limited logger * Use DD_LOGGING_RATE_LIMIT env key * Use ddtrace.internal.logger.get_logger everywhere needed * fix english * Add comment about 'logging.setLoggerClass()' * Add internal logger tests * work on logger tests * finish up tests for internal logger
1 parent ae9d42a commit 4e16656

File tree

46 files changed

+598
-131
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+598
-131
lines changed

.circleci/config.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,20 @@ jobs:
8686
- tracer.results
8787
- *save_cache_step
8888

89+
internal:
90+
docker:
91+
- *test_runner
92+
resource_class: *resource_class
93+
steps:
94+
- checkout
95+
- *restore_cache_step
96+
- run: tox -e '{py27,py34,py35,py36}-internal' --result-json /tmp/internal.results
97+
- persist_to_workspace:
98+
root: /tmp
99+
paths:
100+
- internal.results
101+
- *save_cache_step
102+
89103
opentracer:
90104
docker:
91105
- *test_runner
@@ -1042,6 +1056,9 @@ workflows:
10421056
- integration:
10431057
requires:
10441058
- flake8
1059+
- internal:
1060+
requires:
1061+
- flake8
10451062
- jinja2:
10461063
requires:
10471064
- flake8
@@ -1156,6 +1173,7 @@ workflows:
11561173
- grpc
11571174
- httplib
11581175
- integration
1176+
- internal
11591177
- jinja2
11601178
- kombu
11611179
- mako

ddtrace/api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# stdlib
2-
import logging
32
import time
43
import ddtrace
54
from json import loads
65

76
# project
87
from .encoding import get_encoder, JSONEncoder
98
from .compat import httplib, PYTHON_VERSION, PYTHON_INTERPRETER, get_connection_response
9+
from .internal.logger import get_logger
1010
from .utils.deprecation import deprecated
1111

1212

13-
log = logging.getLogger(__name__)
13+
log = get_logger(__name__)
1414

1515
TRACE_COUNT_HEADER = 'X-Datadog-Trace-Count'
1616

ddtrace/bootstrap/sitecustomize.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import logging
1010

1111
from ddtrace.utils.formats import asbool, get_env
12+
from ddtrace.internal.logger import get_logger
1213

1314
logs_injection = asbool(get_env('logs', 'injection'))
1415
DD_LOG_FORMAT = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] {}- %(message)s'.format(
@@ -32,7 +33,7 @@
3233
else:
3334
logging.basicConfig(format=DD_LOG_FORMAT)
3435

35-
log = logging.getLogger(__name__)
36+
log = get_logger(__name__)
3637

3738
EXTRA_PATCHED_MODULES = {
3839
"bottle": True,

ddtrace/commands/ddtrace_run.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
if debug and debug.lower() == "true":
1111
logging.basicConfig(level=logging.DEBUG)
1212

13+
# Do not use `ddtrace.internal.logger.get_logger` here
14+
# DEV: It isn't really necessary to use `DDLogger` here so we want to
15+
# defer importing `ddtrace` until we actually need it.
16+
# As well, no actual rate limiting would apply here since we only
17+
# have a few logged lines
1318
log = logging.getLogger(__name__)
1419

1520
USAGE = """

ddtrace/context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import logging
21
import threading
32

43
from .constants import SAMPLING_PRIORITY_KEY, ORIGIN_KEY
4+
from .internal.logger import get_logger
55
from .utils.formats import asbool, get_env
66

7-
log = logging.getLogger(__name__)
7+
log = get_logger(__name__)
88

99

1010
class Context(object):

ddtrace/contrib/cassandra/session.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
Trace queries along a session to a cassandra cluster
33
"""
44
import sys
5-
import logging
5+
66
# 3p
77
import cassandra.cluster
88
from ddtrace.vendor import wrapt
99

1010
# project
11-
from ddtrace import Pin
12-
from ddtrace.compat import stringify
13-
14-
from ...utils.formats import deep_getattr
15-
from ...utils.deprecation import deprecated
11+
from ...compat import stringify
1612
from ...ext import net, cassandra as cassx, errors
13+
from ...internal.logger import get_logger
14+
from ...pin import Pin
15+
from ...utils.deprecation import deprecated
16+
from ...utils.formats import deep_getattr
1717

18-
log = logging.getLogger(__name__)
18+
log = get_logger(__name__)
1919

2020
RESOURCE_MAX_LENGTH = 5000
2121
SERVICE = 'cassandra'

ddtrace/contrib/celery/signals.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import logging
2-
31
from ddtrace import Pin, config
42

53
from celery import registry
64

5+
from ...internal.logger import get_logger
76
from . import constants as c
87
from .utils import tags_from_context, retrieve_task_id, attach_span, detach_span, retrieve_span
98

10-
log = logging.getLogger(__name__)
9+
log = get_logger(__name__)
1110
SPAN_TYPE = 'worker'
1211

1312

ddtrace/contrib/dbapi/__init__.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
"""
22
Generic dbapi tracing code.
33
"""
4-
5-
import logging
6-
7-
from ddtrace.vendor import wrapt
8-
9-
from ddtrace import Pin
10-
from ddtrace.ext import AppTypes, sql
11-
from ddtrace.settings import config
12-
from ddtrace.utils.formats import asbool, get_env
13-
14-
log = logging.getLogger(__name__)
4+
from ...ext import AppTypes, sql
5+
from ...internal.logger import get_logger
6+
from ...pin import Pin
7+
from ...settings import config
8+
from ...utils.formats import asbool, get_env
9+
from ...vendor import wrapt
10+
11+
log = get_logger(__name__)
1512

1613
config._add('dbapi2', dict(
1714
trace_fetch_methods=asbool(get_env('dbapi2', 'trace_fetch_methods', 'false')),

ddtrace/contrib/django/apps.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import logging
2-
31
# 3rd party
42
from django.apps import AppConfig, apps
53

@@ -10,7 +8,9 @@
108
from .templates import patch_template
119
from .middleware import insert_exception_middleware, insert_trace_middleware
1210

13-
log = logging.getLogger(__name__)
11+
from ...internal.logger import get_logger
12+
13+
log = get_logger(__name__)
1414

1515

1616
class TracerConfig(AppConfig):

ddtrace/contrib/django/cache.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import logging
2-
31
from functools import wraps
42

53
from django.conf import settings as django_settings
64

5+
from ...internal.logger import get_logger
76
from .conf import settings, import_from_string
87
from .utils import quantize_key_values, _resource_from_cache_prefix
98

109

11-
log = logging.getLogger(__name__)
10+
log = get_logger(__name__)
1211

1312
# code instrumentation
1413
DATADOG_NAMESPACE = '__datadog_original_{method}'

0 commit comments

Comments
 (0)