Включение отладки
Возврат отладочной информации в ответах REST API
По умолчанию сервер не добавляет детали ошибок в тело ответа, чтобы избежать раскрытия информации, специфичной для инстанса, конечным пользователям.
Вы можете изменить это, установив:
$ export SYNCMASTER__SERVER__DEBUG=False
$ # запуск сервера REST API
$ curl -XPOST http://localhost:8000/failing/endpoint ...
{
"error": {
"code": "unknown",
"message": "Получено необработанное исключение. Пожалуйста, обратитесь в службу поддержки",
"details": null,
},
}
$ export SYNCMASTER__SERVER__DEBUG=True
$ # запуск сервера REST API
$ curl -XPOST http://localhost:8000/failing/endpoint ...
Traceback (most recent call last):
File ".../uvicorn/protocols/http/h11_impl.py", line 408, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".../site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
ОПАСНО
Это только для среды разработки. НЕ используйте в продакшене!
Вывод отладочных логов на бэкенде
См. Настройки логирования, но замените уровень логирования INFO на DEBUG.
Заполнение заголовка X-Request-ID на бэкенде
Сервер может добавлять заголовок X-Request-ID к ответам, что позволяет сопоставлять запросы на клиенте с ответами бэкенда.
Это делается с помощью промежуточного ПО request_id, которое включено по умолчанию и может быть настроено, как описано ниже:
Bases: BaseModel
X-Request-ID Middleware Settings.
See asgi-correlation-id <https://github.com/snok/asgi-correlation-id>_ documentation.
Examples
.. code-block:: yaml :caption: config.yml
server:
request_id:
enabled: True
header_name: X-Request-ID
update_request_header: True
Source code in syncmaster/server/settings/server/request_id.py
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | |
Вывод идентификатора запроса в логи бэкенда
Это делается путем добавления специального фильтра к обработчику логирования:
config.yml
logging:
filters:
correlation_id:
class: asgi_correlation_id.CorrelationIdFilter
uuid_length: 32
default_value: '-'
Получаемые логи выглядят так:
2023-12-18 17:14:11.711 uvicorn.access:498 [INFO] 018c15e97a068ae09484f8c25e2799dd 127.0.0.1:34884 - "GET /monitoring/ping HTTP/1.1" 200