Как обрабатывать Nodejs uncaughtException и unhandledRejection без завершения с помощью winston - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти способ отловить все ошибки в моем проекте и сохранить их в базе данных, а также в файл журнала. Я создал следующее промежуточное программное обеспечение, которое помогает мне в этом, но единственная проблема, с которой я сталкиваюсь при использовании winston, заключается в том, что после обработки uncaughtException или unhandledRejection приложение завершается. Есть ли способ в Уинстоне избежать этого прекращения. Все, что я хочу, чтобы они были сохранены и позже удалены.

const winston = require('winston'); 

require('winston-mongodb');

module.exports = function () {
process.on('unhandledRejection', (ex) => {
    //console.error('error', ex);
    throw ex; //Find better way
});//Catching uncaught exceptions with winston. We are using both file and db.
winston.exceptions.handle([
        new winston.transports.MongoDB({
            db: 'mongodb://localhost/web_logs',
            collection: 'exceptions',
            level: 'error'
        }),
        new winston.transports.Console,
        new winston.transports.File({filename: 'web-exceptions.log'})
    ]
);};

Используется в экспресс после маршрутов как

require('./middleware/exception-handler')();

Работает хорошо, как задумано, но завершает работу приложения. Как этого избежать?

1 Ответ

0 голосов
/ 23 января 2019

У вас есть функция промежуточного программного обеспечения для обработки ошибок expressjs? // что-то вроде этого в вашем файле index.js или app.js

`app.use(function (err, req, res, next) {
   console.error(err.stack)
   res.status(500).send('Something broke!')
 });`

winstonjs регистрирует ошибки, но они не перехватываются, поэтому это может привести к сбою вашего приложения

...