Vk-io: Не могу найти, как прикрепить собственный логгер

Созданный на 12 дек. 2020  ·  8Комментарии  ·  Источник: negezor/vk-io

Что ты сделал?

Попробуйте найти раздел в документации)

Чего вы ожидали?

Это отсутствует

Каков был реальный результат?

Хотелось бы его найти))

Самый полезный комментарий

Библиотека в принципе не логирует ошибки, так как все они выбрасывается в Promise (иначе был бы анти-паттерн). Если говорить про исключения в middleware, то их можно все поймать одним корневым middleware:

// Custom catch all the errors
vk.updates.use(async (context, next) => {
    try {
        await next();
    } catch (error) {
        logger.error('An error has occurred', { error });
    }
});

Больше информации про глобальную обработку ошибок в middleware тут.

Все 8 Комментарий

Например?

Ээээмм..... Например это что? Если например возможную реализацию, то я бы объявил интерфейс ллггера, как у объекта консоль. То есть обычные методы, дебаг() инфо(), варн() и эррор() и в конструкторе класса, в параметре опшэнс принимал бы объект с таким интерфейсом.

Где бы это пригодилось: это очень полезно когда в целом на проект есть система логгирования например как у нас нацеленная на elk. В таком проекте сообщения ВК тоже должны укладываться в общую систему логгирования.

Библиотека в принципе не логирует ошибки, так как все они выбрасывается в Promise (иначе был бы анти-паттерн). Если говорить про исключения в middleware, то их можно все поймать одним корневым middleware:

// Custom catch all the errors
vk.updates.use(async (context, next) => {
    try {
        await next();
    } catch (error) {
        logger.error('An error has occurred', { error });
    }
});

Больше информации про глобальную обработку ошибок в middleware тут.

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

@isinkin @negezor Почему тикет кстати закрылся?

Это не зона ответственности библиотеки, вы можете обернуть все методы своим обработчиком и логировать как вам угодно. В библиотеке есть возможность узнать вызываемые методы модуля с указанием env DEBUG=vk-io:*, так как используется модуль debug.

@negezor я хотел бы уточнить свой запрос, возможно он неправильно понят. Я не предлагаю создать свою библиотеку для логгирования внутри vk-io. Если это было так понято, сорян. Согласен, что это не ответственность библиотеки. Я спрашивал, как всего лишь уже существующую библиотеку (в моем случае https://www.npmjs.com/package/bunyan) подключить к vk-io. То есть не как создать, а как подключить.

Я думаю очевидно, что механизм подключения внешних логгеров в зоне отвтственности vk-io.
Для пример прикладываю, как это организовано в TypeORM. Если даже просто скопировать такой механизм, было бы очень клево. https://typeorm.io/#/logging

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

Посыл, что есть встроенный логгер DEBUG=vk-io:* даже не знаю как прокомментировать. Это не логгер при всем уважении. Если это логгер, то скажите как такие логи пробросить в ELK? тогда я соглашусь.

Братцы, ну вы где?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Pacmard picture Pacmard  ·  3Комментарии

AndreiSoroka picture AndreiSoroka  ·  6Комментарии

Zharckov picture Zharckov  ·  13Комментарии

Bobrovskih picture Bobrovskih  ·  3Комментарии

zardoy picture zardoy  ·  18Комментарии