我遇到错误,我也知道它正在抛出,因为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
});
答案 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
});