Skip to content

Commit 25f7a5a

Browse files
Feat/add traceid (#270)
* feat: add custom request log * fix: format error * fix: lint error * feat: add request middleware * fix: format error * feat: support CUSTOM_LOGGER_WORKERS env * feat: delete test_log * feat: add trace_id to log record * revert: log code --------- Co-authored-by: CaralHsi <[email protected]>
1 parent 1b195a5 commit 25f7a5a

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

src/memos/api/routers/product_router.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
import logging
2+
from memos.log import get_logger
33
import traceback
44

55
from datetime import datetime
@@ -30,7 +30,7 @@
3030
from memos.memos_tools.notification_service import get_error_bot_function, get_online_bot_function
3131

3232

33-
logger = logging.getLogger(__name__)
33+
logger = get_logger(__name__)
3434

3535
router = APIRouter(prefix="/product", tags=["Product API"])
3636

src/memos/log.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@ def _setup_logfile() -> Path:
3333
return logfile
3434

3535

36+
class TraceIDFilter(logging.Filter):
37+
"""add trace_id to the log record"""
38+
39+
def filter(self, record):
40+
try:
41+
trace_id = get_current_trace_id()
42+
record.trace_id = trace_id if trace_id else "no-trace-id"
43+
except Exception:
44+
record.trace_id = "no-trace-id"
45+
return True
46+
47+
3648
class CustomLoggerRequestHandler(logging.Handler):
3749
_instance = None
3850
_lock = threading.Lock()
@@ -123,22 +135,23 @@ def close(self):
123135
"disable_existing_loggers": False,
124136
"formatters": {
125137
"standard": {
126-
"format": "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
138+
"format": "%(asctime)s [%(trace_id)s] - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
127139
},
128140
"no_datetime": {
129-
"format": "%(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
141+
"format": "[%(trace_id)s] - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s"
130142
},
131143
},
132144
"filters": {
133-
"package_tree_filter": {"()": "logging.Filter", "name": settings.LOG_FILTER_TREE_PREFIX}
145+
"package_tree_filter": {"()": "logging.Filter", "name": settings.LOG_FILTER_TREE_PREFIX},
146+
"trace_id_filter": {"()": "memos.log.TraceIDFilter"},
134147
},
135148
"handlers": {
136149
"console": {
137150
"level": selected_log_level,
138151
"class": "logging.StreamHandler",
139152
"stream": stdout,
140153
"formatter": "no_datetime",
141-
"filters": ["package_tree_filter"],
154+
"filters": ["package_tree_filter", "trace_id_filter"],
142155
},
143156
"file": {
144157
"level": "DEBUG",
@@ -147,6 +160,7 @@ def close(self):
147160
"maxBytes": 1024**2 * 10,
148161
"backupCount": 10,
149162
"formatter": "standard",
163+
"filters": ["trace_id_filter"],
150164
},
151165
},
152166
"root": { # Root logger handles all logs

0 commit comments

Comments
 (0)