44{% if cookiecutter .use_prometheus % }
55from prometheus_fastapi_instrumentator import Instrumentator
66{% endif % }
7+ {% if cookiecutter .use_logfire % }
8+ import logfire
9+ from loguru import logger
10+ {% endif % }
711
812def _add_cors_middleware (app : FastAPI ) -> None :
913 """Add CORS Middleware."""
1014 app .add_middleware (CORSMiddleware , allow_origins = ["*" ])
1115{% if cookiecutter .use_prometheus % }
1216def _add_prometheus_middleware (app : FastAPI ) -> None :
1317 """Add Prometheus Middleware."""
14- if settings .prometheus .enabled :
15- instrumenter = Instrumentator ().instrument (app )
16- instrumenter .expose (app )
18+ if not settings .prometheus .enabled :
19+ return
20+ instrumenter = Instrumentator ().instrument (app )
21+ instrumenter .expose (app )
22+ {% endif % }
23+ {% if cookiecutter .use_logfire % }
24+ def _add_logfire_middleware (app : FastAPI ) -> None :
25+ """Add Logfire Middleware."""
26+ if not settings .logfire .enabled :
27+ return
28+ if not settings .logfire .write_token :
29+ logger .warning (
30+ "Logfire is enabled but no write token is provided. "
31+ "Skipping Logfire middleware."
32+ )
33+ return
34+ logfire .configure (
35+ token = settings .logfire .write_token .get_secret_value (),
36+ environment = settings .env ,
37+ send_to_logfire = "if-token-present" ,
38+ service_name = "game_zone" ,
39+ )
40+ logfire .instrument_fastapi (app , capture_headers = True )
41+ logfire .instrument_asyncpg ()
42+ logfire .instrument_system_metrics ()
43+ logger .configure (handlers = [logfire .loguru_handler ()])
1744{% endif % }
1845def add_middleware (app : FastAPI ) -> None :
1946 """Add all middlewares."""
2047 _add_cors_middleware (app )
2148 {% - if cookiecutter .use_prometheus % }
2249 _add_prometheus_middleware (app )
50+ {% endif % }
51+ {% - if cookiecutter .use_logfire % }
52+ _add_logfire_middleware (app )
2353 {% endif % }
0 commit comments