Winston 3.1.0. Регистрация необработанных исключений и отклонений в Mongo - PullRequest
0 голосов
/ 19 ноября 2018

Я обнаружил, что выбрасывание необработанных исключений и отклонений возвращает анонимный объект ошибки, из-за которого мне было трудно разместить информацию, необходимую для вложенных свойств, в мета-раздел документов MongoDB.Анонимный объект имеет следующие свойства:

  1. "ошибка"
  2. "уровень"
  3. "сообщение"
  4. "стек"
  5. «исключение»
  6. «дата»
  7. «процесс»
  8. «ОС»
  9. «трассировка»
* 1022К сожалению, единственный способ получить то, что мне было нужно, - это преобразовать сообщение объекта в строку, а затем взломать его, чтобы получить от него то, что мне нужно.У кого-нибудь есть способ получше?Я уверен, что я добавлю больше полей в будущем, я просто хотел посмотреть, есть ли менее хакерский способ сделать это в данный момент.
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 как необработанное исключение, а затем пропускает через вышеуказанный форматер.Есть ли более чистый способ сделать это?

...