2015-02-13 3 views
1

Я пытаюсь записать ошибки в файл в node.js. я попытался Winston:Ошибка узла node.js в файле

winston= require('winston'); 
var logger = new (winston.Logger)({ 
transports: [ 
new (winston.transports.Console)({ level: 'error' }), 
new (winston.transports.File)({ filename: 'error.log' }) 
] 
}); 

Я также попытался console.error:

var log_file_err= 
fs.createWriteStream(__dirname + '/error.log', {flags : 'a'}); 

var err_stdout = process.stderr; 

console.error = function(d) { // 
log_file_err.write(util.format(d) + '\n'); 
err_stdout.write(util.format(d) + '\n'); 
}; 

генерировать ошибку я использовал:

function get_time(date) 
{ 
    return date.getHours()+':'+date.getMinutes(); 
} 
console.log(get_time(Date()));//instead of new Date() 

я не получить никаких дальнейших ошибок (только хотел неопределенными for Date()), но error.log остается пустым. «debug.log» (обычное ведение журнала), где я использую overded console.log, работает правильно.

+0

нет идей? такая ошибка не написана в файле, потому что приложение рушится? если это причина, как я могу регистрировать такие ошибки в файле? – user3776738

+0

В вашем определении журнала ошибок winston, если вы проходите на уровне: «ошибка», которая будет регистрировать фатальные ошибки. Я не уверен, как захватить все console.errors (все еще пытаясь понять это) – ccnokes

ответ

0

Наконец я нашел решение, которое не работает отлично для меня:

var log_file_err=fs.createWriteStream(__dirname + '/error.log',{flags:'a'}); 

process.on('uncaughtException', function(err) { 
console.log('Caught exception: ' + err); 
log_file_err.write(util.format('Caught exception: '+err) + '\n'); 
}); 
+0

Это работает хорошо для меня. Не дает мне больше подробностей о том, что пошло не так, но, по крайней мере, это что-то. Обратите внимание: для этого вам нужно определить: 'const fs = require ('fs');' и 'const util = require ('util');' – rgbflawed

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