Skip to content

Commit 63a4f7a

Browse files
committed
propagate ddtrace logs to our logs
1 parent 26b9e2a commit 63a4f7a

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

blackfire_conprof/log.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33

44
_DEFAULT_LOG_LEVEL = 2
55

6-
7-
def _get_log_level(logger, level):
6+
def _get_log_level(level):
87
_LOG_LEVELS = {
98
5: logging.DEBUG,
109
4: logging.DEBUG,
@@ -17,26 +16,18 @@ def _get_log_level(logger, level):
1716
level = int(level)
1817
return _LOG_LEVELS[level]
1918
except:
20-
logger.error(
19+
logging.getLogger().error(
2120
"BLACKFIRE_LOG_LEVEL is set to %s however it should be a number between 1 and 4 (1: error, 2: warning, 3: info, 4: debug). Default is '%d'." % \
2221
(level, _DEFAULT_LOG_LEVEL)
2322
)
2423
return _LOG_LEVELS[_DEFAULT_LOG_LEVEL]
2524

26-
27-
def get_logger(name, include_line_info=True):
25+
def _get_log_handler():
2826
log_file = os.environ.get('BLACKFIRE_LOG_FILE')
29-
log_level = os.environ.get('BLACKFIRE_LOG_LEVEL', _DEFAULT_LOG_LEVEL)
30-
logger = logging.getLogger(name)
31-
log_level = _get_log_level(logger, log_level)
32-
logger.setLevel(log_level)
3327

3428
formatter_info = "%(asctime)s %(levelname)s [pid:%(process)d, tid:%(thread)d] [%(name)s] "
3529

36-
# line info becomes irrelevant when logging is made from the C extension, thus
37-
# this is configurable.
38-
if include_line_info:
39-
formatter_info += "[%(filename)s:%(lineno)d] - "
30+
formatter_info += "[%(filename)s:%(lineno)d] - "
4031
formatter_info += "%(message).8192s"
4132
formatter = logging.Formatter(formatter_info)
4233

@@ -48,6 +39,25 @@ def get_logger(name, include_line_info=True):
4839
log_handler = logging.FileHandler(log_file, 'a')
4940
log_handler.setFormatter(formatter)
5041

51-
logger.addHandler(log_handler)
42+
return log_handler
43+
44+
_log_handler = _get_log_handler()
45+
_log_level= _get_log_level(os.environ.get('BLACKFIRE_LOG_LEVEL', _DEFAULT_LOG_LEVEL))
46+
47+
def get_logger(name):
48+
logger = logging.getLogger(name)
49+
50+
logger.setLevel(_log_level)
51+
logger.addHandler(_log_handler)
5252

5353
return logger
54+
55+
# This function is used to bridge ddtrace logging to blackfire_conprof logging.
56+
def bridge_ddtrace_logging():
57+
logger_dict = logging.root.manager.loggerDict
58+
59+
for logger_name, logger_obj in logger_dict.items():
60+
if logger_name.startswith('ddtrace.profiling'):
61+
if isinstance(logger_obj, logging.Logger):
62+
logger_obj.addHandler(_log_handler)
63+
logger_obj.setLevel(_log_level)

blackfire_conprof/profiler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
import os
33
import platform
44
import collections
5-
from ddtrace.profiling import Profiler as DDProfiler
65
from blackfire_conprof import log
76
from .version import __version__
87

8+
from ddtrace.profiling import Profiler as DDProfiler
9+
log.bridge_ddtrace_logging()
10+
911
_DEFAULT_PERIOD = 45 # secs
1012
_DEFAULT_UPLOAD_TIMEOUT = 10 # secs
1113

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import io
21
from setuptools import setup
32

43
HOMEPAGE = "https://blackfire.io"

0 commit comments

Comments
 (0)