カスタムトランスポートコードの例を追加する場合、 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リポジトリの例と同様に制限されています。
いくつかのカスタムトランスポートを調べたところ、同じものは2つありません。
コールバックの実装が必要なようです。 これに言及し、この点を提起してくれてありがとう
最も参考になるコメント
同意します。 また、例を改善できると思います。 コメント
// Perform the writing to the remote service
を考えると、リモートサービスは非同期呼び出しだと思います。 他のカスタムトランスポートを見た後、例はむしろこのように読むべきではありませんか?transports.File
コードで見つけたコールバックのデフォルト値。