`request_id` - это идентификатор корреляции, уникальный идентификатор, который присваивается каждому запросу. Он позволяет провести соответствие между записями в логах и запросами к сервису модели.
Этот идентификатор представляет из себя строку. Если при запросе к сервису модели в заголовке `X-Request-Id` была передана строка, она используется в качестве идентификатора корреляции запроса. Если при запросе заголовок `X-Request-Id` не передан, идентификатор корреляции генерируется сервисом. В ответе на запрос к сервису модели в заголовке `X-Request-Id` идентификатор корреляции возвращается в любом случае - передан он был в запросе или нет.
`request_id` добавляется в запись логов при обработке запроса сервисом модели. Чтобы логирование с`request_id` не приводило к ошибкам при выполнении кода модуля вне сервиса, рекомендуется использовать функцию-фильтр, добавляющую поле `request_id` в объект `LogRecord`, полями которого заполняется строка логов.
Пример добавления фильтр-функции через `logger.addFilter()`. Предполагается, что обработчик (hanlder) добавлен только к логгеру `"my_project"` как корневому логгеру проекта. Метод `addFilter` нужно вызвать для всех логгеров, к которым добавлены обработчики, либо к самому обработчику.
```python
logger = logging.getLogger("my_project")
def filter_request_id(record):
if not hasattr(record, "request_id"):
record.request_id = "-"
return True
logger.addFilter(filter_request_id)
```
#### Фильтр в `dictConfig`
При настройке фильтров в `dictConfig` нужно передавать не саму фильтр-функцию, а функцию, которая возвращает фильтр-функцию.