Winston: カスタムトランスポートの例を改善する

作成日 2018年07月04日  ·  3コメント  ·  ソース: winstonjs/winston

カスタムトランスポートコードの例を追加する場合、 logメソッドでは、 callbacksetImmediateの両方の呼び出しの目的についての説明はありません。

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リポジトリの例と同様に制限されています。

いくつかのカスタムトランスポートを調べたところ、同じものは2つありません。

コールバックの実装が必要なようです。 これに言及し、この点を提起してくれてありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価