Node.js 如何捕获Winston Http传输上的错误
我正在使用winston创建一个日志框架。基本上使用内置的winston http传输。我的问题是,由于主机/路径/身份验证无效,在发出http post请求时,如何捕获可能发生的任何http异常。下面是我的代码结构-Node.js 如何捕获Winston Http传输上的错误,node.js,logging,https,winston,Node.js,Logging,Https,Winston,我正在使用winston创建一个日志框架。基本上使用内置的winston http传输。我的问题是,由于主机/路径/身份验证无效,在发出http post请求时,如何捕获可能发生的任何http异常。下面是我的代码结构- const { createLogger, format, transports } = require('winston'); const { combine, timestamp, label, printf } = format; const transportO
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;
const transportOptions = {
host: 'host',
port: 'port',
path: '/',
auth: '',
};
const myFormat = printf(debug => {
var msg = {
timestamp: debug.timestamp,
label: debug.label,
level: debug.level,
message: debug.message,
};
return JSON.stringify(msg);
});
const logger = createLogger({
level: 'debug',
format: combine(label({ label: 'label' }), timestamp(), myFormat),
transports: [
new transports.Console(),
new transports.Http(transportOptions),
],
json: false,
});
logger.info('Test');
如果我在transportOptions
中提供了错误的值,那么它什么也不做。我希望我的框架通过某种异常,这样我就可以知道何时发生任何错误/异常。有人能给我一些建议吗?根据,如果HTTP响应代码不是200,HTTP传输似乎会发出一个'warn'
事件。因此,只要服务器在出现错误时返回non-200,您就可以侦听传输中的'warn'
事件,并相应地处理错误(抛出异常或任何您想要的)。下面是示例代码(我测试过了,它可以正常工作):
请注意,如果服务器没有响应,则传输不会报告警告;这是一个bug还是一个功能我不确定…:)
// Declare your transport outside the logger definition
const t = new transports.Http(transportOptions);
...
t.on('warn', (e) => console.log('warning! ' + e));
logger.info('Test'); // 'warning! ...'