Как стать автором
Обновить

Комментарии 8

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

Писать логи stdout в нагруженных приложениях - не вариант, т.к. это синхронный вывод, об который тормозит приложение, ест много CPU, к тому же подходит только для PULL-сбора, а не активную буферезированную отправку. А форматирование, ротацию уровни логирования - тоже полезные вещи. Или вы предлагаете всегда логи уровня TRACE в stdout выводит, а там уже разбираться что-куда?

А асинхронно писать в stdout — запрещено законом?

Так не запрещено, но это может добавить сложности и остальных проблем это все равно не решает.

В линуксах stdout это дискриптор файла - не чем не хуже остальных. Но вам не надо заботиться о ротации.

Асинхронное логирование это компромисс между перфомансом и рисками потерять накопленное, но не отправленное, в случае сбоев - т.е. самые ценные для разбора причин куски. Такие решения удобнее принимать на строне эксплуатации, а не разработки приложения. Приложение меняется чаще и в нем вероятность ошибок выше. Поэтому когда есть возможность, работу с логам лучше выносить наружу.

не чем не хуже остальных.

Хуже тем что жрет много CPU, если логов много. Если вы хотите все логи во вне обрабатывать - значит в stdout нужно все уровни логов писать, а потом сортировать, фильтровать и тд. А если через либу писать - там уже всё отфильтровано, отформатировано, буферизовано, асинхроно и тд, и может сразу в сервер сбора логов отправлять без лишних прослоек. Оптимизировал я высоконагруженные приложения - там больше половины ядер ел просто вывод в stdout.

А не подскажите в Bun Pino до сих пор не работает? Что тогда кто посоветует?

в разработке можно включить trace для максимальной детализации, а в продакшене оставить info или warn, чтобы не захламлять логи

Я немного плаваю в этом. Подскажите, если приложение не позволяет на лету (на горячую) менять уровень логирования. А если даже и поменять на трейс\дебаг - то всё встаёт колом. Получается, что и нет смысла впринципе раставлять дебаги\трейсы в коде. Верно?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации