[英]NodeJs Capture All process.stdout to File
我正在尋找一種方法來獲取所有process.stdout
並將其管道傳輸到日志文件,我有以下內容:
import fs from 'fs';
let logFile = fs.createWriteStream('./test.log', {
encoding: 'utf8',
flags : 'a'
});
process.stdout.pipe(logFile);
但是,它似乎仍會將所有stdout
吐到控制台,並且日志文件中沒有任何內容(盡管正在創建中)。
我寧願程序只寫到stdout
並讓調用node的過程決定如何處理輸出:
node server | tee test.log
這有一些好處:
並且避免了非常嚴重的缺點:
我認為這是行不通的,因為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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.