Skip to content

Commit 986e4fb

Browse files
committed
task: add request_id to logs
1 parent 06a7306 commit 986e4fb

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/app/core/logs.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
import os
44
import sys
55

6+
from app.core.request_context import RequestContext
67
from app.utils.getenv import getenv_bool
78

89
# TODO consider refactoring, see https://github.com/mCodingLLC/VideosSampleCode/tree/master/videos/135_modern_logging
910

1011
_IS_LOGGING_INITIALIZED = False
1112
# see https://docs.python.org/3/library/logging.html#logrecord-attributes
12-
_LOG_FORMAT = (
13-
"%(asctime)s | %(levelname)-5.5s | %(threadName)s | %(name)s :: %(message)s"
14-
)
13+
_LOG_FORMAT = "%(asctime)s | %(levelname)-5.5s | %(threadName)s | %(name)s [%(request_id)s] :: %(message)s"
1514
_FORMATTER = logging.Formatter()
1615

1716

@@ -30,6 +29,7 @@ def _log_record_to_json(record: logging.LogRecord) -> dict:
3029
_FORMATTER.formatException(record.exc_info) if record.exc_info else None
3130
),
3231
"stack_info": record.stack_info,
32+
"request_id": record.request_id if hasattr(record, "request_id") else None,
3333
}.items()
3434
if v
3535
}
@@ -51,6 +51,17 @@ def format(self, record: logging.LogRecord) -> str:
5151
return _handler
5252

5353

54+
class RequestIdFilter(logging.Filter):
55+
56+
def __init__(self, name: str = ""):
57+
super().__init__(name=name)
58+
59+
def filter(self, record: logging.LogRecord) -> bool:
60+
if not hasattr(record, "request_id"):
61+
record.request_id = RequestContext.get_request_id()
62+
return True
63+
64+
5465
def _setup_logging():
5566
log_level = os.getenv(key="LOG_LEVEL", default="info").upper()
5667
log_as_json = getenv_bool(key="LOG_AS_JSON", default=True)
@@ -61,6 +72,7 @@ def _setup_logging():
6172

6273
# re-configure root logger handler
6374
_handler = _build_json_handler() if log_as_json else _build_handler()
75+
_handler.addFilter(RequestIdFilter())
6476
logging.root.addHandler(_handler)
6577

6678
# set root logger level

0 commit comments

Comments
 (0)