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 )
0 commit comments