# Перегруженный журнал ошибок может лишить вас сна

(В оригинале - Verbose Logging Will Disturb Your Sleep)

У системы, запущенной в эксплуатацию, первым признаком наличия проблем является перегруженный лог. Вы понимаете, что я имею в виду – когда каждый клик мышью в нормальном процессе работы приводит к тому, что единственный лог системы записывается куча сообщений. Слишком детальное логирование столь же бесполезно, как и его отсутствие.

Если вы разрабатываете системы, подобные моим, то после того, как ваша работа заканчивается, начинается работа других людей. После запуска системы в эксплуатацию она, скорее всего, будет работать некоторое, иногда достаточно продолжительное время, если повезет. Как вы собираетесь узнавать о том, что что-то в системе не так, и что вы будете с этим делать?

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

Для многих систем первым индикатором того, что что-то пошло не так, является запись сообщения в лог. Скорее всего, в лог ошибок. Сделайте так, чтобы с первого дня работы системы каждая запись в лог ошибок приводила к немедленному оповещению вас, даже посреди ночи. Если вы можете имитировать нагрузку во время тестирования, то чистый журнал ошибок – первый сигнал о том, что система достаточно устойчивая. Или же первое предупреждение для вас, если это не так.

Распределенные системы вносят в игру еще один уровень сложности. Вам нужно решить, что вы будете делать, если откажет удаленный компонент. Для распределенных систем такой отказ – это в порядке вещей. Учитывайте это, когда проектируете политику ведения лога ошибок.

В целом, лучший индикатор того, что с системой все хорошо – очень редкие низкоприоритетные события в логе. Я буду счастлив, если буду получать одно сообщение низкого приоритета на каждое значимое событие в приложении.

Перегруженный лог – это индикатор того, что систему будет сложно контролировать после запуска. Если вы не ожидаете того, что в журнале ошибок будет что-то появляться, то вам будет гораздо проще понять, что нужно делать, когда там что-то однажды появится.

Автор оригинала - [Johannes Brodwall](http://programmer.97things.oreilly.com/wiki/index.php/Johannes_Brodwall)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/ru/thing_53.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
