Чем можно заменить логирование, если оно неуместно
Что проверяют
Понимаете ли вы, что логи это один из инструментов наблюдаемости, а не единственный, и знаете ли случаи, когда писать в лог вредно: горячий путь, персональные данные, объём, который стоит дороже самого сервиса. Заодно смотрят, чем вы вообще диагностируете прод.
Как отвечать
Сначала уточните, почему логирование неуместно: ответ зависит от причины.
- Слишком большой объём и шум: метрики вместо строки на каждый запрос, счётчики и гистограммы, а в лог уходят только ошибки и редкие события.
- Нужно проследить один запрос через несколько сервисов: распределённая трассировка, в Go это OpenTelemetry со спанами и пробросом
context.Contextнасквозь. - В данных секреты или персональные сведения: пишем не значение, а идентификатор, хэш или код события.
- Горячий цикл, где мешает даже форматирование строки: счётчики в памяти,
expvar, профилирование черезpprofвместо печати. - Разовая отладка: отладчик,
runtime/trace, тест, который воспроизводит случай.
Важно сказать, что замена не бесплатная. Метрика отвечает, сколько и как часто, но не отвечает, что случилось с конкретным заказом. Трасса отвечает где, но обычно сэмплируется. Поэтому сильный ответ звучит как распределение ролей: метрики на алерты, трассы на поиск места, структурные логи через log/slog на редкие интересные события с полями, а не на поток.
Где спотыкаются
Называют статический анализ и модульные тесты альтернативой логированию. Они работают до релиза и ничего не говорят о том, что происходит на проде прямо сейчас, так что это подмена вопроса, а не ответ на него.
Второе: обещают убрать логи и поставить алерты. Алерт срабатывает по метрике, а дальше всё равно нужно куда-то смотреть, и если диагностических данных не осталось, дежурный получает уведомление и не может по нему ничего сделать.
Третье: забывают про хранение и стоимость. Логи это объём, индексация и деньги, поэтому уровни должны что-то значить, отладочный уровень на проде выключен, а сообщения структурные, иначе их всё равно невозможно искать в нужный момент.