Встречается на собеседованиях • сегодня
Как trace ID попадает в лог
В распределённых системах trace ID передаётся через контекст запроса и автоматически добавляется в логи с помощью инструментов логирования. Вот основные способы:
- Middleware/Interceptor
В веб-фреймворках (Django, FastAPI, Flask) middleware добавляет trace ID в контекст запроса и логи:
python
# FastAPI middleware example
from uuid import uuid4
from fastapi import Request
async def add_trace_id(request: Request, call_next):
trace_id = request.headers.get("X-Trace-ID", str(uuid4()))
request.state.trace_id = trace_id
text
# Логирование с trace_id
logger.info(f"Request started", extra={"trace_id": trace_id})
response = await call_next(request)
return responsetext
2. **Логгеры с контекстом**
Библиотеки типа `structlog` или `logging` с фильтрами:
```python
import logging
from contextvars import ContextVar
trace_id = ContextVar("trace_id")
class TraceFilter(logging.Filter):
def filter(self, record):
record.trace_id = trace_id.get()
return True
logger.addFilter(TraceFilter())- Инструменты observability
OpenTelemetry автоматически инжектит trace_id в логи через интеграцию с логгерами.
Ключевое: trace ID должен передаваться через весь контекст выполнения (async/thread-local/contextvars) и подхватываться логгером.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы