如何处理..未处理的错误' nodejs中的事件

时间:2016-01-09 15:04:56

标签: node.js

我遇到错误,我也知道它正在抛出,因为server.log文件不存在。

但我想知道的是如何以编程方式处理此错误,就像我们对unCaughtException所做的那样,例如

process.on('unCaughtException', function(err){
    logger.error(err1)
})


以下是错误,我得到了:

events.js:141
  throw er; // Unhandled 'error' event
  ^

Error: ENOTDIR: not a directory, stat '../logs/server.log'
at Error (native)

下面是实际的代码..这就是抛出这个错误。

module.exports = new winston.Logger({
transports: [
new winston.transports.File({
  level: 'info',
  filename: '../logs/server.log',
  json: false,
  maxsize: 5242880, //5MB
  maxFiles: 2,
  colorize: false
}),
new winston.transports.Console({
  level: 'debug',
  json: false,
  colorize: true
})
],
exitOnError: false
});

1 个答案:

答案 0 :(得分:0)

根据您的代码判断,您正在使用在发生错误时发出error事件的事件发射器,在这种情况下您需要侦听这些事件:

someLibrary({ logfile : '../logs/server.log' }).on('error', function(err) {
  ...handle the error...
});

更多信息here

编辑:在Winston的特定情况下,您应该将error事件处理程序附加到传输实例:

module.exports = new winston.Logger({
  transports: [
    new winston.transports.File({
      level: 'info',
      filename: '../logs/server.log',
      json: false,
      maxsize: 5242880, //5MB
      maxFiles: 2,
      colorize: false
    }).on('error', function(err) {
      console.error(err.stack);
    }),
    new winston.transports.Console({
      level: 'debug',
      json: false,
      colorize: true
    })
  ],
  exitOnError: false
});