|
1 | 1 | import structlog |
2 | 2 | import logging |
3 | | -import sys |
4 | 3 | import os |
| 4 | +import sys |
| 5 | + |
| 6 | +try: |
| 7 | + import ddtrace |
| 8 | + from ddtrace.helpers import get_correlation_ids |
| 9 | + |
| 10 | + ddtrace_available = True |
| 11 | +except ImportError: |
| 12 | + ddtrace_available = False |
5 | 13 |
|
6 | | -from structlog import wrap_logger |
7 | 14 | from structlog.processors import JSONRenderer |
8 | 15 | from structlog.stdlib import filter_by_level |
9 | 16 | from structlog.stdlib import add_log_level_number |
10 | 17 |
|
11 | | -import ddtrace |
12 | | -from ddtrace.helpers import get_correlation_ids |
| 18 | +LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") |
13 | 19 |
|
14 | 20 |
|
15 | 21 | def tracer_injection(logger, log_method, event_dict): |
@@ -40,17 +46,28 @@ def increase_level_numbers(_, __, event_dict): |
40 | 46 | return event_dict |
41 | 47 |
|
42 | 48 |
|
43 | | -level = os.getenv("LOG_LEVEL", "INFO") |
| 49 | +processors = [ |
| 50 | + filter_by_level, |
| 51 | + rename_message_key, |
| 52 | + add_log_level_number, |
| 53 | + increase_level_numbers, |
| 54 | + structlog.stdlib.PositionalArgumentsFormatter(), |
| 55 | + structlog.processors.StackInfoRenderer(), |
| 56 | + structlog.processors.format_exc_info, |
| 57 | + structlog.processors.UnicodeDecoder(), |
| 58 | + JSONRenderer(), |
| 59 | +] |
| 60 | + |
| 61 | +if ddtrace_available: |
| 62 | + processors.insert(0, tracer_injection) |
44 | 63 |
|
45 | | -logging.basicConfig(stream=sys.stdout, format="%(message)s", level=level) |
46 | | -bufflog = wrap_logger( |
47 | | - logging.getLogger(__name__), |
48 | | - processors=[ |
49 | | - tracer_injection, |
50 | | - filter_by_level, |
51 | | - rename_message_key, |
52 | | - add_log_level_number, |
53 | | - increase_level_numbers, |
54 | | - JSONRenderer(), |
55 | | - ], |
| 64 | +structlog.configure( |
| 65 | + context_class=dict, |
| 66 | + logger_factory=structlog.stdlib.LoggerFactory(), |
| 67 | + wrapper_class=structlog.stdlib.BoundLogger, |
| 68 | + cache_logger_on_first_use=True, |
| 69 | + processors=processors, |
56 | 70 | ) |
| 71 | + |
| 72 | +bufflog = structlog.get_logger() |
| 73 | +bufflog.setLevel(LOG_LEVEL) |
0 commit comments