💡 Логируй то, что надо!

Заходил когда-нибудь в логи и тонул? Листаешь мегабайты текста, а в итоге - ничего не понял. Знакомо?

Логов много не бывает. Бывает много бесполезных логов.

Если ты логируешь всё подряд - ты не логируешь ничего.

В критический момент ты просто утонешь в простыне текста, пока прод горит.


⚡ Что реально нужно логировать?

Одна запись на один клиентский запрос. Одна запись на выполнение cli скрипта. Которая отвечает на главный вопрос: Как прошел процесс? Успех или ошибка?


🎯 Мой подход:

На каждый запрос/скрипт - одна итоговая запись. Если ошибка - пишу reason так, чтобы сразу было понятно, куда смотреть. Для отладки включаю подробные логи локально, на проде - только суть. Вот мой идеальный лог:

{
  "datetime": "2025-03-19 10:23:15.123"
  "status": "error",
  "reason": "Database connection timeout",
  "script": "cron/parse-orders.php"
}
{
  "datetime": "2025-03-19 10:24:11.123"
  "status": "success",
  "reason": "",
  "script": "cron/parse-orders.php",
  "final_time": 0.123,
  "rows": 1002
}

Вот что важно:

  • ✅ status - сразу видно, всё ок или нет. Можно мониторить только по “error”
  • ✅ reason - ёмко объясняет, что пошло не так. Не нужно парсить stack trace, чтобы понять, что упала база.
  • ✅ контекст - можно дополнить параметрами вызова, pid процесса и др, все то что поможет идентифицировать запрос или итерацию вызова скрипта.

Что не надо логировать:

  • ❌ Каждую итерацию цикла
  • ❌ "Начал делать то-то" - если без этого можно понять результат
  • ❌ Дампы огромных массивов
  • ❌ Стек-трейсы на каждое предупреждение

Помни: логи ты пишешь не для процесса, а для ответа на вопрос "Что случилось?" в 3 часа ночи, когда прод лёг.


💬 Обсудить пост:

🔥 И не забудь подписаться :)