Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将node.js登录到文件,而不使用其他模块_Javascript_Node.js - Fatal编程技术网

Javascript 将node.js登录到文件,而不使用其他模块

Javascript 将node.js登录到文件,而不使用其他模块,javascript,node.js,Javascript,Node.js,我正在作为守护进程运行一个节点应用程序。调试守护进程时,我需要查看输出,因此我希望将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”被打印到控

我正在作为守护进程运行一个节点应用程序。调试守护进程时,我需要查看输出,因此我希望将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
中看到输出


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

在创建时,
控制台
对象获取对
进程的引用。stdout
stderr

(您可以在中看到这一点)

以后重新分配它们不会影响控制台

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


或者,您可以覆盖
控制台
方法,让它们改为写入您的文件。

控制台
对象第一次创建时,它会获取对
进程.stdout
stderr
的引用。
(您可以在中看到这一点)

以后重新分配它们不会影响控制台

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

或者,您可以覆盖
控制台
方法,并将其写入您的文件。

类似于,您可以覆盖
控制台.log
中的
进程.stdout.write

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');
与类似,您可以覆盖
控制台.log
中的
进程.stdout.write

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');

js的要点是使用另一个模块。另一个模块以某种方式钩住节点。我想知道怎么做,所以我可以自己做。阅读它的源代码。Node.js的全部要点是使用另一个模块。另一个模块以某种方式连接到Node。我想知道怎么做,所以我可以自己做。阅读它的源代码。