【问题标题】:Output to console and log file输出到控制台和日志文件
【发布时间】:2017-10-12 02:48:48
【问题描述】:

我正在捕获console.log 数据并将其保存到日志文件中,但我还想在控制台中显示数据。我怎样才能做到这一点?我宁愿不安装一个包就这样做。

这是我用来捕获console.log 数据的:

var stdo = fs.createWriteStream('log.txt', {'flags': 'a'});
var write = function(write) {
  return function(string, encoding, fd) {
    stdo.write(string);
  };
};
process.stdout.write = write(process.stdout.write);

【问题讨论】:

  • 你可以写信给process.stderprocess.stdout,它会在控制台输出
  • 好的。示例代码?
  • 您可以使用命令行吗?重定向到控制台和 logfile.txt。

标签: node.js fs


【解决方案1】:

请查看this答案。

你几乎可以这样做。

const fs = require('fs');

let outputFileStream = fs.createWriteStream('log.txt', {'flags': 'a'});

const originalWrite = process.stdout.write;

process.stdout.write = function() {
  originalWrite.apply(process.stdout, arguments);
  outputFileStream.write.apply(outputFileStream, arguments);
};

//These 3 lines go both to the file and to the console.
console.log('What is love');
console.log('Baby don\'t hurt me');
console.log('Don\'t hurt me');

//Won't get to the file. As it's a different stream.
console.error('No more');

【讨论】: