2015-08-06 4 views
0

Я использую модуль узла winston (here).как добавить обратный вызов для регистратора узла узла Winston?

var path = '/logs/mylog.log' 
var logger = new(winston.Logger)({ 
    transports: [ 
    new (winston.transports.Console)(), 
    new (winston.transports.File)({ filename: path}) 
    ] 
}); 

Моя проблема заключается в том, что я хочу сделать некоторые кодирования только после сохранения этого файла, но я не получаю, как я могу добавить функцию обратного вызова, которая будет выполняться только после сохранения файла журнала. я пытался сделать:

var logger = new(winston.Logger)({ 
    transports: [ 
    new (winston.transports.Console)(), 
    new (winston.transports.File)({ filename: path},function(){ 

    }) 
    ] 
}); 

, но ничего не происходит. Может ли кто-нибудь мне помочь?

ответ

0

Вы можете использовать logging событие для этого:

logger.on('logging', function(transport) { 
    // check if this was the `File` transport 
    if (transport.name === 'file') { 
    console.log('logged a message to', transport.filename); 
    } 
}); 
+0

Спасибо. Работает. Но проблема только в том, что это происходит в бесконечном цикле. «Записанное сообщение в файл.log» постоянно печатается, и он никогда не останавливается. Даже оператор возврата не работает. У вас есть идеи, почему это происходит? – user3256002

+0

Вы регистрируетесь внутри обработчика событий? Потому что это, вероятно, вызовет цикл. – robertklep

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