En el ejemplo de código Agregar transportes personalizados , en el método log
, no hay explicación sobre el propósito de las llamadas callback
y 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?
}
Estoy de acuerdo. También creo que el ejemplo podría mejorarse. Teniendo en cuenta el comentario // Perform the writing to the remote service
, supongo que el servicio remoto es una llamada asíncrona. Después de ver otros transportes personalizados, ¿no debería leerse así el ejemplo?
log(info, callback = () => {}) {
callRemoteService(info)
.then(result => {
callback(null, result);
this.emit('logged', info);
})
.catch(error => {
callback(error);
this.emit('error', error);
})
}
El valor predeterminado para la devolución de llamada que encontré en el código transports.File
.
Encontraría esto realmente útil. El ejemplo aquí es limitado, al igual que el ejemplo en el repositorio https://github.com/winstonjs/winston-transport .
Mirando a través de una serie de transportes personalizados y no hay dos iguales.
Parece que se requiere la implementación de devolución de llamada. Gracias por mencionar esto y mencionar este punto.
Comentario más útil
Estoy de acuerdo. También creo que el ejemplo podría mejorarse. Teniendo en cuenta el comentario
// Perform the writing to the remote service
, supongo que el servicio remoto es una llamada asíncrona. Después de ver otros transportes personalizados, ¿no debería leerse así el ejemplo?El valor predeterminado para la devolución de llamada que encontré en el código
transports.File
.