我试图找到一种方法来捕获项目中的所有错误,并将它们保存到数据库以及文件日志中。我创建了以下中间件,可以帮助我满足这一需求,但是使用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')();
它可以按预期运行,但会终止该应用程序。如何避免呢?
答案 0 :(得分:0)
是否有一个expressjs错误处理中间件功能? //在您的index.js或app.js文件中类似
`app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});`
winstonjs记录错误,但未捕获到错误,因此它将使您的应用程序崩溃