В примере кода с добавлением пользовательских транспортов в методе log
нет объяснения цели вызовов callback
и setImmediate
.
log(info, callback) {
// what is this for? Does Winston need it?
setImmediate(() => {
this.emit('logged', info);
});
// Perform the writing to the remote service
callback(); // is it required to include this cb in all transports? Does Winston need it?
}
Я согласен. Я также думаю, что пример можно было бы улучшить. Учитывая комментарий // Perform the writing to the remote service
, я бы предположил, что удаленная служба является асинхронным вызовом. Посмотрев на другие пользовательские транспорты, не должен ли пример выглядеть примерно так?
log(info, callback = () => {}) {
callRemoteService(info)
.then(result => {
callback(null, result);
this.emit('logged', info);
})
.catch(error => {
callback(error);
this.emit('error', error);
})
}
Значение по умолчанию для обратного вызова я нашел в коде transports.File
.
Было бы очень полезно. Пример здесь ограничен, как и пример в репозитории https://github.com/winstonjs/winston-transport .
Просматривая несколько пользовательских транспортов, нет двух одинаковых.
Похоже, требуется реализация обратного вызова. Спасибо, что упомянули об этом и подняли этот вопрос
Самый полезный комментарий
Я согласен. Я также думаю, что пример можно было бы улучшить. Учитывая комментарий
// Perform the writing to the remote service
, я бы предположил, что удаленная служба является асинхронным вызовом. Посмотрев на другие пользовательские транспорты, не должен ли пример выглядеть примерно так?Значение по умолчанию для обратного вызова я нашел в коде
transports.File
.