Задать вопрос
@Vadim1899

Допустимо ли хранить логи nodejs приложения в mysql бд или есть решения лучше?

Разрабатываю веб сервис на fastify и хочу грамотно настроить логгирование. Во всех предыдущих пет-проектах я вызывал console.log и при возникновении ошибок просто смотрел консоль. Минус такого решения - при перезапуске сервиса консоль очищается.

Появилась идея писать логи в отдельную бд, прокидывать туда лейблы (info,error,critical) и прочую полезную информацию, чтобы можно было легко эти логи изучать.

Но может есть более элегантные решения при котором разбор логов не будет адским занятием?
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 5
xez
@xez
TL Junior Roo
Есть более элегантное решение.
Называется Elastic Stack
Ответ написан
@Everything_is_bad
Но может есть более элегантные решения при котором разбор логов не будет адским занятием?
писать логи стандартными средствами системы, следующий этап ELK, но это точно не для пет-проектов
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Есть - уже лет 10+ назад придумали БД для логов. Самые популярные сегодня - Elastic (== ELK в прошлом) и Loki.
Есть куча облачных сервисов на базе этих БД.
Все современные логгеры поддерживают log shipping по сети.
Ответ написан
Комментировать
@rPman
Логи нужно не просто писать в какую-то базу, а делать их машиночитаемыми, иначе смысла нет.

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

А так, первым шагом можно вместо записи в базу данных, просто писать в jsonl (построчно по json на событие), по меньше упаковки в человекочитаемые строки и побольше читаемые машиной, постаравшийсь полностью исключить вывод сообщений об ошибках в stdout/stderr, и над именованием файлов подумать, что бы удобнее с ними было работать.
Ответ написан
Комментировать
@Billander
Писать в файлы так как их можно прочитать где угодно, вытащить с убитой системы и тд, самое идеальное решение (не зря логи все в файлах), причем продумать формат так что бы его можно было легко спарсить через утилиты cli, мне очень нравится формат логов nginx (поэтому советую присмотреться к нему). В любом случае все мониторинговые системы, будут брать данные из коллекторов логов и тд. Можно конечно написать для любимого стака отдельный коннектор, что бы вывод следовал конкретной идеологии(например что бы лог писался сразу в TSDB), но это уже как плюшка мне кажется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы