File tree Expand file tree Collapse file tree 5 files changed +1016
-984
lines changed
Expand file tree Collapse file tree 5 files changed +1016
-984
lines changed Original file line number Diff line number Diff line change 11import uuid
22import logging
33from typing import Any , Dict , Optional
4+ from asgi_correlation_id import correlation_id
45
56from langfuse import Langfuse
67from langfuse .client import StatefulGenerationClient , StatefulTraceClient
@@ -55,10 +56,13 @@ def start_trace(
5556 input : Dict [str , Any ],
5657 metadata : Optional [Dict [str , Any ]] = None ,
5758 ):
59+ metadata = metadata or {}
60+ metadata ["request_id" ] = correlation_id .get () or "N/A"
61+
5862 self .trace = self .langfuse .trace (
5963 name = name ,
6064 input = input ,
61- metadata = metadata or {} ,
65+ metadata = metadata ,
6266 session_id = self .session_id ,
6367 )
6468
Original file line number Diff line number Diff line change 11import logging
22import os
33from logging .handlers import RotatingFileHandler
4+ from asgi_correlation_id import correlation_id
45from app .core .config import settings
56
67LOG_DIR = settings .LOG_DIR
910LOG_FILE_PATH = os .path .join (LOG_DIR , "app.log" )
1011
1112LOGGING_LEVEL = logging .INFO
12- LOGGING_FORMAT = "%(asctime)s - %(levelname)s - %(name)s - %(message)s"
13+ LOGGING_FORMAT = (
14+ "%(asctime)s - [%(correlation_id)s] - %(levelname)s - %(name)s - %(message)s"
15+ )
16+
17+
18+ class CorrelationIdFilter (logging .Filter ):
19+ def filter (self , record : logging .LogRecord ) -> bool :
20+ record .correlation_id = correlation_id .get () or "N/A"
21+ return True
22+
1323
1424# Create root logger
1525logger = logging .getLogger ()
2131# Stream handler (console)
2232stream_handler = logging .StreamHandler ()
2333stream_handler .setFormatter (formatter )
34+ stream_handler .addFilter (CorrelationIdFilter ())
2435logger .addHandler (stream_handler )
2536
2637# Rotating file handler
2738file_handler = RotatingFileHandler (
2839 LOG_FILE_PATH , maxBytes = 10 * 1024 * 1024 , backupCount = 5
2940)
3041file_handler .setFormatter (formatter )
42+ file_handler .addFilter (CorrelationIdFilter ())
3143logger .addHandler (file_handler )
Original file line number Diff line number Diff line change 11import sentry_sdk
2-
32from fastapi import FastAPI
43from fastapi .routing import APIRoute
5-
4+ from asgi_correlation_id . middleware import CorrelationIdMiddleware
65from app .api .main import api_router
76from app .core .config import settings
87import app .core .logger
@@ -24,6 +23,7 @@ def custom_generate_unique_id(route: APIRoute) -> str:
2423)
2524
2625app .middleware ("http" )(http_request_logger )
26+ app .add_middleware (CorrelationIdMiddleware )
2727
2828app .include_router (api_router , prefix = settings .API_V1_STR )
2929
Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ dependencies = [
2828 " pre-commit>=3.8.0" ,
2929 " openai_responses" ,
3030 " langfuse>=2.60.3" ,
31+ " asgi-correlation-id>=4.3.4" ,
3132]
3233
3334[tool .uv ]
You can’t perform that action at this time.
0 commit comments