我尝试使用以下代码将 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,“测试”进入控制台,而不是日志文件。该平台是win32,但我认为它不重要。
代码有什么问题?
结论:
标准输出、标准错误和文件写入流都是接收器类型的端点,所以我不能将它们绑定在一起。我需要用双工模拟流替换标准输出和标准错误,这样我就可以将这些模拟流绑定到原始接收器和日志接收器。我不确定console.log 和console.error 是否会受到用supernova 建议的机制替换流的影响,我宁愿使用专用的记录器,它使用控制台而不是这种解决方法。