No exemplo de código Adding Custom Transports , no método log
, não há explicação sobre a finalidade das chamadas callback
e 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?
}
Eu concordo. Eu também acho que o exemplo poderia ser melhorado. Considerando o comentário // Perform the writing to the remote service
, suponho que o serviço remoto seja uma chamada assíncrona. Depois de olhar para outros transportes personalizados, o exemplo não deveria ser assim?
log(info, callback = () => {}) {
callRemoteService(info)
.then(result => {
callback(null, result);
this.emit('logged', info);
})
.catch(error => {
callback(error);
this.emit('error', error);
})
}
O valor padrão para o retorno de chamada eu encontrei no código transports.File
.
Acharia isso realmente útil. O exemplo aqui é limitado, assim como o exemplo no repositório https://github.com/winstonjs/winston-transport .
Olhando através de uma série de transportes personalizados e não há dois iguais.
Parece que a implementação de retorno de chamada é necessária. Obrigado por mencionar isso e trazer este ponto
Comentários muito úteis
Eu concordo. Eu também acho que o exemplo poderia ser melhorado. Considerando o comentário
// Perform the writing to the remote service
, suponho que o serviço remoto seja uma chamada assíncrona. Depois de olhar para outros transportes personalizados, o exemplo não deveria ser assim?O valor padrão para o retorno de chamada eu encontrei no código
transports.File
.