在txt文件中的Node.js console.log()
我还有一个问题( 最后一个问题 )。 目前我正在做一个Node.js项目,在这里我有很多 console.log()函数。 到目前为止,这个工作还行,但我也希望写入控制台的所有内容都写在日志文件中。 有人可以帮帮我吗?
例如:
Console.log('The value of array position [5] is '+ array[5]);
在我的真实代码中它多一点,但这应该给你一个想法。
谢谢你,希望。
我会用图书馆而不是重新发明轮子。 我在npm上查找了一个log4j
types的库,它提供了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()
。