Node.js console.log() in txt file
我还有一个问题(最后一个问题)。目前我正在处理一个node.js项目,在这个项目中我有许多console.log()函数。到目前为止,这还可以,但我还希望所有写入控制台的内容也写入日志文件。有人能帮我吗?
例如:
1 | Console.log('The value of array position [5] is '+ array[5]); |
在我真正的代码中,它有点多,但这应该给你一个想法。
希望谢谢你。
只需在终端中这样运行脚本…
1 | node script-file.js > log-file.txt |
这会告诉shell将命令
这被称为重定向,它非常强大。假设您想将所有错误写入一个单独的文件…
1 | node script-file.js >log-file.txt 2>error-file.txt |
现在所有的
我会用图书馆而不是重新发明轮子。我在NPM上找了一个
如果要登录到控制台和文件:
1 2 3 4 5 6 7 | var log4js = require('log4js'); log4js.configure({ appenders: [ { type: 'console' }, { type: 'file', filename: 'logs/cheese.log', category: 'cheese' } ] }); |
现在,您的代码可以使用
1 | var logger = log4js.getLogger('cheese'); |
在代码中使用记录器
1 2 3 | logger.warn('Cheese is quite smelly.'); logger.info('Cheese is Gouda.'); logger.debug('Cheese is not a food.'); |
您可以尝试重写内置的
1 2 3 4 5 6 | var originalLog = console.log; console.log = function(str){ originalLog(str); // Your extra code } |
但是,这会将
1 2 3 4 5 6 7 | (function(){ var originalLog = console.log; console.log = function(str){ originalLog(str); // Your extra code })(); |
要编写文件,请参阅这个stackoverflow问题,要覆盖
@Activedecay的答案似乎是可行的。但是,到
1 2 3 4 5 6 7 | const myLoggers = require('log4js'); myLoggers.configure({ appenders: { mylogger: { type:"file", filename:"path_to_file/filename" } }, categories: { default: { appenders:["mylogger"], level:"ALL" } } }); const logger = myLoggers.getLogger("default"); |
现在,如果你想登录到上述文件,你可以这样做,就像activedecay告诉你的:
1 2 3 | logger.warn('Cheese is quite smelly.'); logger.info('Cheese is Gouda.'); logger.debug('Cheese is not a food.'); |
然而,这不会将任何东西记录到控制台,而且由于我还没有弄清楚如何在一个记录器中实现多个附加器,所以您仍然可以实现好的旧
我知道这是一条有点老旧的线,而且OP的特殊问题已经解决了,但是既然我来这里是为了同样的目的,我也可以留下我的经验,以便将来帮助任何访问这条线的人。
只需编写自己的日志函数:
1 2 3 4 | function log(message) { console.log(message); fs.writeFileSync(...); } |
然后用