1

我正在将节点应用程序作为守护程序运行。在调试守护进程时,我需要查看输出,所以我想将 stdout 和 stderr 重定向到一个文件。

我希望我可以在 Python 或 C 中重新分配stdout和喜欢:stderr

fs = require('fs');
process.stdout = fs.openSync('/var/log/foo', 'w');
process.stderr = process.stdout;
console.log('hello');

当我直接运行脚本时,“hello”会打印到控制台!当然,当我在后台运行时,我在控制台(当然)或/var/log/foo.

我不想要或不需要复杂的日志记录。我只需要查看节点已经提供的内置消息。

4

2 回答 2

1

console对象获取对它的引用process.stdout以及stderr首次创建的时间。
(您可以在源代码中看到这一点)。

稍后重新分配它们不会影响console.

重定向这些流的常用方法是在重定向流的情况下启动进程。

或者,您可以覆盖这些console方法并让它们写入您的文件。

于 2013-09-18T21:05:16.670 回答
0

此问题类似,您可以覆盖process.stdout.writewhich is called from console.log

var fs = require('fs');
var oldWrite = process.stdout.write;

process.stdout.write = function (d) {
    fs.appendFileSync('./foo', d);
    oldWrite.apply(this, arguments);
};

console.log('hello');
于 2013-09-18T21:15:54.630 回答