通常是使用控制台打印node脚本执行时需要看到的信息,但是这些信息只能在控制台上查看。如果你想把打印出来的信息记录到文件中查看,那就看看下面的吧。1.前言期望:每次运行脚本时,都会生成日志并存储在本地。每次执行脚本,都会清除之前的日志内容。需要了解的知识点:node.js中的fs模块,node.js中新增的console.Console2,whatfs使用node.js存储日志,肯定会检查增删改查本地文件,所以我们需要使用fs.如果你写过node,那你一定见过fs,fs的全称是文件系统(FileSystem)。文件系统简单来说就是用Node来操作系统中的文件。fs不需要npminstall,node自带,直接引用即可:constfs=require('fs');本文将使用fs的fs.createWriteStream(path,options)方法创建一个可读流,用法如下:/***@param1path*@param2options*/letfs=require('fs');letws=fs.createWriteStream('./1.txt',{flags:'w',//文件的打开方式mode:0o666,//文件的权限设置encoding:'utf8',//编码方式ofthecharacterswrittenintothefilehighWaterMark:3,//最高水位线start:0,//写入文件的起始索引LocationautoClose:true,//是否自动关闭文档})用于生成日志登录后本地文件。3.newconsole.Console(stdout[,stderr][,ignoreErrors])node.js中的console模块,提供基本的调试功能。使用非常简单,常用的API主要有console.log()和console.error()。另外,基于Console类,你可以方便的扩展自己的控制台实例,比如将调试信息打印到文件,在控制台部署输出等。constfs=require('fs');constfile=fs.createWriteStream('./outPut.txt');letlogger=newconsole.Console(file,file);//调用logger.log('hello');复制代码此时调用logger.log的内容会输出到outPut.txt,而不是打印到控制台。4.node.js生成日志文件的方法了解了node的fs和console这两个模块后,我们开始写这个简单实用的方法,首先createindex.js://index.jsconstfs=require('fs');letoptions={flags:'w',//encoding:'utf8',//utf8编码}letstderr=fs.createWriteStream('./a.log',options);//创建loggerlet记录器=newconsole.Console(stderr);//在真实项目中调用下面记录错误日志logger.log('Thisisalog1');logger.log('Thisisalog2');logger.log('这是一个log3');打开终端,执行nodelogger.js:$nodeindex.js这时候根目录会生成一个.log文件,最简单的版本就这样完成了。但是这里执行nodelogger.js的时候,日志会堆积起来,增加本地存储的负担。所以我想要的是每次执行时都清除它。然后我们重写index.js,在node.js中重写仍然使用fs方法fs.writeFile://清除a.log内容fs.writeFile('./a.log','',function(err){if(err){console.log(err);}});复制代码至此,我期望得到的日志文件就完成了,完整的代码是://index.jsconstfs=require('fs');letoptions={flags:'w',//encoding:'utf8',//utf8编码}letstderr=fs.createWriteStream('./a.log',options);//创建loggerletlogger=newconsole.Console(stderr);fs.writeFile('./a.log','',function(err){if(err){console.log(err);}});//在实际项目中调用如下记录错误Loglogger.log('Thisisalog1');logger.log('这是日志2');logger.log('这是日志3');可以拷贝到本地运行看看,在终端执行:nodeindex.js5,others当然可以在此基础上扩展其他内容,比如给日志加时间戳,区分日志类型存储等。以上,如有疑问或建议,欢迎指正。参考资料:nodejs.cn/api/console...nodejs.cn/api/fs.html
