Попробуйте найти раздел в документации)
Это отсутствует
Хотелось бы его найти))
Например?
Ээээмм..... Например это что? Если например возможную реализацию, то я бы объявил интерфейс ллггера, как у объекта консоль. То есть обычные методы, дебаг() инфо(), варн() и эррор() и в конструкторе класса, в параметре опшэнс принимал бы объект с таким интерфейсом.
Где бы это пригодилось: это очень полезно когда в целом на проект есть система логгирования например как у нас нацеленная на 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? тогда я соглашусь.
Братцы, ну вы где?
Самый полезный комментарий
Библиотека в принципе не логирует ошибки, так как все они выбрасывается в
Promise
(иначе был бы анти-паттерн). Если говорить про исключения в middleware, то их можно все поймать одним корневым middleware:Больше информации про глобальную обработку ошибок в middleware тут.