我发现抛出未处理的异常和拒绝会返回一个匿名错误对象,这使我很难将所需的子属性信息放入MongoDB文档的meta节中。匿名对象具有以下属性:
不幸的是,我可以获得我所需要的唯一方法是将对象的消息转换为字符串,然后砍掉它以获得我所需要的东西。有谁有更好的方法?我确定将来会添加更多字段,我只是想看看目前是否有较简单的方法。
const errorStackFormat = winston.format(info => {
if (info instanceof Object){
let infoStr = (info.message.toString());
let name = (infoStr.substr(0, infoStr.indexOf(":"))).trim();
return Object.assign({}, info, {
message: info.message,
meta: {
name: name,
stack: info.stack,
trace: info.trace,
properties: Object.getOwnPropertyNames(info)
}});
};
return info
});
请注意,这用于记录未处理异常和承诺拒绝。目前,winston不支持未处理的拒绝,因此暂时,我仅使用以下内容:
process.on('unhandledRejection', (ex) => {
throw ex;
});
哪个winston将其视为未处理的异常,然后将其放入上述格式化程序。有没有更清洁的方法可以做到这一点?