我正在使用Winston创建一个日志记录框架。基本上使用内置的winston http传输。我的问题是,由于无效的主机/路径/身份验证,在发出http发布请求时,我应该如何捕获可能发生的任何http异常。下面是我的代码结构- 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中提供了错误的值,它什么也不做。我希望我的框架通过某种异常,以便我知道何时发生任何错误/异常。谁能给我任何建议吗? 最佳答案 根据https://github.com/winstonjs/winston/blob/master/lib/winston/transports/http.js#L57,如果HTTP响应代码不是200,则看起来HTTP传输会发出'warn'事件。因此,只要您的服务器在出现错误时返回非200,就可以监听事件,然后相应地处理错误(引发异常或任何您想要的事件)。这是示例代码(我已经测试过并且可以工作):// Declare your transport outside the logger definitionconst t = new transports.Http(transportOptions);...t.on('warn', (e) => console.log('warning! ' + e));logger.info('Test'); // 'warning! ...'请注意,如果服务器没有响应,则传输不会报告警告。我不确定是错误还是功能... :)关于node.js - 如何在Winston Http Transport上捕获错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51504453/
10-10 18:47
查看更多