Vk-io: Can't find how to attach a custom logger

Created on 12 Dec 2020  ·  8Comments  ·  Source: negezor/vk-io

What did you do?

Try to find a section in documentation )

What did you expect to happen?

It's absent

What was the actual result?

I would like to find it))

vk-io

Most helpful comment

Библиотека в принципе не логирует ошибки, так как все они выбрасывается в 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 тут.

All 8 comments

Например?

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

Где бы это пригодилось: это очень полезно когда в целом на проект есть система логгирования например как у нас нацеленная на 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? тогда я соглашусь.

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

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Jengas picture Jengas  ·  15Comments

Zharckov picture Zharckov  ·  13Comments

ProgrammingLife picture ProgrammingLife  ·  9Comments

T1MOXA picture T1MOXA  ·  20Comments

Saiv46 picture Saiv46  ·  9Comments