Winston: Улучшить пример пользовательского транспорта

Созданный на 4 июл. 2018  ·  3Комментарии  ·  Источник: winstonjs/winston

В примере кода с добавлением пользовательских транспортов в методе 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 .

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

Я согласен. Я также думаю, что пример можно было бы улучшить. Учитывая комментарий // 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 .

Просматривая несколько пользовательских транспортов, нет двух одинаковых.

Похоже, требуется реализация обратного вызова. Спасибо, что упомянули об этом и подняли этот вопрос

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