Winston 3.1.0将未处理的异常和拒绝记录到Mongo

时间:2018-11-19 02:27:09

标签: node.js mongodb express winston

我发现抛出未处理的异常和拒绝会返回一个匿名错误对象,这使我很难将所需的子属性信息放入MongoDB文档的meta节中。匿名对象具有以下属性:

  1. “错误”
  2. “级别”
  3. “消息”
  4. “堆栈”
  5. “例外”
  6. “日期”
  7. “过程”
  8. “操作系统”
  9. “跟踪”

不幸的是,我可以获得我所需要的唯一方法是将对象的消息转换为字符串,然后砍掉它以获得我所需要的东西。有谁有更好的方法?我确定将来会添加更多字段,我只是想看看目前是否有较简单的方法。

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将其视为未处理的异常,然后将其放入上述格式化程序。有没有更清洁的方法可以做到这一点?

0 个答案:

没有答案