我正在寻找一种方法来获取所有process.stdout
并管道到日志文件,我有以下内容:
import fs from 'fs';
let logFile = fs.createWriteStream('./test.log', {
encoding: 'utf8',
flags : 'a'
});
process.stdout.pipe(logFile);
但是,它似乎仍然向控制台吐出所有stdout
,并且我没有在日志文件中获取任何内容(尽管它已被创建)。
答案 0 :(得分:2)
我宁愿让程序仅写入stdout
并让调用节点的进程决定如何处理输出:
node server | tee test.log
这有一些好处:
避免一个非常严重的缺点:
答案 1 :(得分:0)
我认为这不起作用,因为process.stdout
是一个无法通过管道传输的写入流,尽管我并不完全确定。我所做的工作是以下示例,其中我使用新的可写流覆盖stdout,该流具有_write
方法,该方法调用文件流的write
:
var fs = require('fs');
var writeStream = fs.createWriteStream('./test.log', {
encoding: 'utf8',
flags: 'w'
});
process.stdout = require('stream').Writable();
process.stdout._write = function(chunk, encoding, callback) {
writeStream.write(chunk, encoding, callback);
};
console.log('test from console.log');