nodejs - передать консоль appjs в файл
Я пытаюсь передать консоль appjs в файл с таким кодом:
var fs = require('fs');
var logStream = fs.createWriteStream(__dirname+ '/log.txt', { flags: 'a' });
process.stdout.pipe(logStream);
process.stderr.pipe(logStream);
console.log("test");
Он создает пустой файл, но не более того... С помощью node.exe "test" идет в консоль, а не в файл журнала. Платформа - win32, но я не думаю, что она имеет значение.
В чем проблема с кодом?
заключение:
Stdout, stderr и поток записи в файл являются конечными точками типа приемника, поэтому я не могу связать их вместе. Мне нужно заменить stdout и stderr на фиктивные потоки douplex, чтобы я мог связать эти фиктивные потоки как с оригинальными приемниками, так и с приемниками журналов. Я не уверен, будут ли затронуты console.log и console.error, если заменить потоки механизмом, предложенным сверхновой, я бы предпочел использовать специальный регистратор, который использует консоль вместо этого обходного пути.
1 ответ
Вы должны определить геттеры для process.stdin, process.stdout и process.stderr
var fs = require("fs")
, errlog = fs.createWriteStream("./err.log", { flags: 'a' })
process.__defineGetter__("stderr", function(){
return errlog
})
process.stderr.write("test")
это должно работать