2016-01-09 3 views
0

Я получаю ниже ошибки, и я также знаю, что он метает, потому что файл server.log не существует.Как обрабатывать ..Unhandled 'error' event в nodejs

Но то, что я хочу знать, как справиться с этой ошибки программно, как мы делаем для 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

Судя по вашему коду, вы используете событие эмиттера, который испуская error событие, когда ошибки случаются, и в этом случае вы должны слушать те события:

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

Подробнее here ,

EDIT: в конкретной ситуации Уинстон, вы должны прикрепить обработчик события 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 
}); 
+0

Спасибо Робер для быстрого внушения ... да я использую Winston Moudle настроить регистратор – Vikash

+0

@ Vikash проверит [эту документацию] (https://github.com/winstonjs/winston#exceptions) о спецификациях Winston (хотя мне интересно, относится ли это к ошибкам, вызванным самим Winston). – robertklep

+0

Я прошел через ссылку u shared ... постараюсь наверняка ... но это больше похоже на обработку исключений .. не ошибка ... нет другого простого способа справиться с этим ... – Vikash

Смежные вопросы