需要将自定义winston记录器添加到SMTPTransport传输类,但在连接记录器后根本不执行任何错误记录功能。
以下是nodejs nodemailer util
中SMTPTransport类的摘录class SMTPTransport extends EventEmitter {
...
this.logger = shared.getLogger(this.options, {
component: this.options.component || 'smtp-transport'
});
...
send(mail, callback) {
....
connection.send(envelope, mail.message.createReadStream(), (err, info) => {
...
try {
return callback(null, info);
} catch (E) {
this.logger.error(
{
err: E,
tnx: 'callback'
},
'Callback error for %s: %s',
messageId,
E.message
);
}
});
尝试覆盖,如下例所示,不会启动任何错误记录。
在以下示例中,此记录器记录上面显示的send函数内的所有异常以外的所有内容:
winston.loggers.add('logger', {
transports: [
new (winston.transports.Console)({
level: logLevel,
colorize: true,
handleExceptions: true,
humanReadableUnhandledException: true,
showLevel: true,
timestamp: showCliLogPrefix,
stderrLevels: []
}),
options
]
});
var nodeMailer = require(<path to nodeMailer>)
nodeMailer .logger = logger
那么如何将此winston记录器附加到nodeMailer记录器?