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")

это должно работать

Другие вопросы по тегам