Есть ли структурированные логи и как они организованы?
Что проверяют
Умеете ли вы пользоваться логами как инструментом тестирования, а не листать текстовый файл через grep в последний момент. Для QA важно показать, что по логам вы находите причину бага и прикладываете доказательство к тикету. Следом часто спрашивают, как найти все записи одного запроса, прошедшего через несколько сервисов.
Как отвечать
Структурированный лог это запись в машиночитаемом формате, почти всегда JSON по строке на событие. Опишите поля на своём проекте:
- обязательные:
timestampв UTC,level,service,message, версия сборки и окружение; - корреляция:
trace_idилиrequest_id, который передаётся между сервисами в заголовках. Если есть OpenTelemetry, по нему лог связывается с трейсом; - контекст:
user_id,order_id, код ошибки, длительность операции. По ним вы и фильтруете при разборе бага.
Путь логов: приложение пишет в stdout, агент (Filebeat, Fluent Bit, Vector) отправляет их в хранилище. Типичные связки: Elasticsearch или OpenSearch с Kibana, Grafana Loki с запросами на LogQL. Срок хранения задают политики retention, для аудита он дольше, чем для отладочных записей.
Как это использует QA:
- по
request_idиз ответа API находите весь путь запроса и прикладываете ссылку на выборку к багу; - в автотестах после прогона проверяете, что в логах стенда не появилось записей уровня
ERROR; - следите, чтобы в логи не утекали пароли, токены и персональные данные;
- тестируете сами логи как требование: при отказе в оплате пишется событие с кодом причины.
Говорите о своём проекте: стек, поля, как искали. Если структурированных логов не было, так и скажите и опишите, какие поля предложили бы добавить.
Где спотыкаются
Называют структурированной любую строку с датой и уровнем. Запись 2026-09-10 ERROR payment failed без полей приходится разбирать регулярками, фильтровать по order_id не выйдет.
Не знают про корреляционный идентификатор и ищут запрос по времени. В нагруженной системе за ту же секунду пишутся тысячи записей.
Предлагают включить DEBUG в продакшене навсегда. Это деньги на хранение и медленный поиск.