将console.log输出重定向到文件

Mat*_*nti 2 file node.js console.log

这应该是一个微不足道的问题,但我似乎并没有理解它.有没有简单的方法将我的所有console.log输出重定向到文件?console.log以一种很好的方式格式化提供的对象,并与不是普通JSONable对象的对象正确交互.

例如,如果我这样做

var myerr = new Error('There has been an error');
console.log(myerr);
Run Code Online (Sandbox Code Playgroud)

我明白了

[Error: There has been an error.]
Run Code Online (Sandbox Code Playgroud)

如果我这样做的话

process.stdout.write(JSON.stringify(myerr));
Run Code Online (Sandbox Code Playgroud)

我明白了

{}
Run Code Online (Sandbox Code Playgroud)

如果我这样做

process.stdout.write(myerr.toString());
Run Code Online (Sandbox Code Playgroud)

我明白了

Error: There has been an error
Run Code Online (Sandbox Code Playgroud)

因此,如果我console.log使用上面的任何技巧在其参数上循环的函数覆盖我,并将输出重定向到文件,则日志将不完全相同.

所以我想知道:console.log在将它们输出到控制台之前,如何处理它所提供的对象?它只是调用.toString()每个对象,包装[]并发送所有内容process.stdout.write?或者它是否进行其他类型的预处理?

小智 5

我认为使用linux I/O重定向的简单方法.只需以这种方式运行您的应用程序:

node app.js > log.txt
Run Code Online (Sandbox Code Playgroud)

来自您应用的所有输出消息都将重定向到log.txt