在txt文件中的Node.js console.log()

我还有一个问题( 最后一个问题 )。 目前我正在做一个Node.js项目,在这里我有很多 console.log()函数。 到目前为止,这个工作还行,但我也希望写入控制台的所有内容都写在日志文件中。 有人可以帮帮我吗?

例如:

Console.log('The value of array position [5] is '+ array[5]); 

在我的真实代码中它多一点,但这应该给你一个想法。

谢谢你,希望。

我会用图书馆而不是重新发明轮子。 我在npm上查找了一个log4jtypes的库,它提供了https://github.com/nomiddlename/log4js-node

如果你想login到控制台和一个文件:

 var log4js = require('log4js'); log4js.configure({ appenders: [ { type: 'console' }, { type: 'file', filename: 'logs/cheese.log', category: 'cheese' } ] }); 

现在你的代码可以创build一个新的logging器

 var logger = log4js.getLogger('cheese'); 

并在你的代码中使用logging器

 logger.warn('Cheese is quite smelly.'); logger.info('Cheese is Gouda.'); logger.debug('Cheese is not a food.'); 

就像这样在terminal上运行脚本

 node script-file.js > log-file.txt 

这告诉shell将命令node script-file.js的标准输出写入日志文件,而不是将其打印到控制台的默认文件。

这被称为redirect ,它非常强大。 假设你想把所有的错误写入一个单独的文件中

 node script-file.js >log-file.txt 2>error-file.txt 

现在所有的console.log都被写入log-file.txt ,所有的console.error都被写入error-file.txt

你可以尝试覆盖内置的console.log来做一些不同的事情。

 var originalLog = console.log; console.log = function(str){ originalLog(str); // Your extra code } 

但是,这将originalLog放入主范围,所以你应该尝试包装在一个函数。 这被称为闭包,你可以在这里阅读更多关于它们的信息 。

 (function(){ var originalLog = console.log; console.log = function(str){ originalLog(str); // Your extra code })(); 

要写文件,请参阅此 stackoverflow问题,并重写console.log甚至比我显示的方式更好,看到这一点 。 结合这两个答案将为您提供最好的解决scheme。

只需编写自己的日志function:

 function log(message) { console.log(message); fs.writeFileSync(...); } 

然后用log()将所有现有的调用replace为console.log() log()