Мысли программиста / TeaCoder: post #833 — TG.ME

✍️ 10 правил работы с логами

1. Логируйте бизнес-события, а не трассировку кода

Логи вида «функция отработала» никому не помогают. Гораздо полезнее фиксировать результат: «создан заказ», «оплата не прошла», «внешний сервис не ответил».

2. Исключите персональные и конфиденциальные данные

Пароли, токены и платежные реквизиты не должны попадать в системы агрегации (Sentry, Datadog), к которым есть доступ у широкого круга сотрудников.

3. Соблюдайте семантику уровней логирования

Используйте debug для локальной отладки. На уровне info фиксируйте ключевые бизнес-события. Уровень warn применяйте для отклонений от нормы, не остановивших работу, а error - для сбоев, требующих срочной реакции.

4. Используйте только структурированный формат (JSON)

Склеивание строк делает невозможной автоматическую фильтрацию. Передача данных объектом позволяет системам аналитики (допустим, Grafana) индексировать поля и находить корреляции.

5. Включайте сквозной контекст (Trace/Request ID)

Каждая запись должна содержать идентификаторы пользователя, запроса или операции. Это единственная возможность отследить цепочку событий при сбое.

6. Агрегируйте логи при пакетной обработке

Запись каждого элемента в циклах на тысячи итераций переполняет диски и израсходует лимиты сервисов мониторинга. Логируйте итоговый результат пакета: количество обработанных записей и ошибки.

7. Фиксируйте ошибки в месте их возникновения

Логирование на верхнем уровне (в глобальных перехватчиках) теряет локальный контекст операции. Перехватывайте и логируйте исключение там, где известны детали выполнения.

8. Удаляйте отладочные логи

Временные записи, добавленные в процессе разработки, засоряют продакшен. Они должны вычищаться на этапе самопроверки и код-ревью.

9. Избегайте дублирования одной ошибки

Не логируйте одно исключение на каждом слое архитектуры (сервис —> контроллер —> глобальный хендлер). Одно событие должно порождать ровно одну запись в логе.

10. Единый стандарт логов на уровне всей системы

Все сервисы и модули проекта должны использовать единую схему (обязательные поля timestamp, level, service, context). Иначе ни одна система агрегации логов не сможет их нормально распарсить и связать в единую картину.

#ПолезностиДляКодера
❤19🔥8👍4👏1
July 24, 2026 1.5K 5 16