Logging. Лучшие практики
От: Буравчик Россия  
Дата: 22.09.18 16:41
Оценка: 2 (1) +1
Поделитесь полезными советами про логи.

Что пишут умные люди:


1. Писать в лог чем больше, тем лучше.

Больше данных — легче разобраться с проблемами.

НО...! Ведь если на каждый чих писать в лог, потом в этих логах ничего не найти.


2. Использовать машиночитаемый формат сообщений (json)

Рекомендация вроде ясна, удобно в дальнейшем анализировать.
Вот только куда ни посмотришь на логи, везде обычная строка, без key-value или json


3. Рекомендуют записывать контекст.

Просто сообщение "был такой то exception" не катит, т.к. не понятно с каким пользователем/действием/запросом это было связано.
Нужно записывать запрос к серверу, имя пользователя, id сессии и т.п.

НО...! В процессе выполнения "главной задачи" (обработки запроса/транзакции) обычно задача разделяется на меньшие задачи (формирует запросы к базе, выполняется дополнительная обработка данных и т.п.). Эти меньшие задачи тоже нужно отслеживать (логгировать). К ним дописывать тот же контекст, т.е. дублировать/протаскивать контекст в сообщениях? С другой стороны, если вообще не указывать контекст, то как связать эту внутреннюю подзадачу с "главным" запросом при разборе проблем.


4. Держать все логи рядом (вместе)

Это понятно. Но иногда выделяют отдельные лог файлы для ошибок, например. Также удобно собирать логи с нескольких машин где-то на удаленном сервере.


5. Собирать метрики

Например, времени выполнения запросов, процент отказов и т.п.
НО.... Чтобы такое делать надо вообще отдельную подсистему писать — для расчета этих метрик. Как это на практике, непонятно.



Как ЭТО происходит у вас? Поделитесь своими практиками/правилами?
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.