平常都使⽤console来打印 node 脚本执⾏时需要看到的信息,但这些信息也就只能在控制台查看。假如你希望将打印的信息记录到⽂件查看的话,那就往下看看吧。
1、前⾔
期望:
每次运⾏脚本时,⽣成log⽇志存储到本地每次执⾏脚本,之前⽇志内容清空需要了解的知识点:
node.js 中的fs模块
node.js 中的new console.Console
2、什么是 fs
使⽤ node.js 对⽇志进⾏存储,就⼀定会对本地⽂件的增删改查,那么我们需要⽤到fs。
如果你写过 node,想必你应该见过它fs,fs全称为⽂件系统(File System)。⽂件系统简单来说就是通过 Node 来操作系统中的⽂件。fs 不需要 npm install,node 中⾃带,直接引⽤即可:
const fs = require('fs');
本⽂将会使⽤ fs 的fs.createWriteStream(path, options)⽅法,⽤于创建可读流,⽤法如下:
/**
* @param1 path * @param2 options */
let fs = require('fs');
let ws = fs.createWriteStream('./1.txt',{ flags:'w'//⽂件的打开模式
,mode:0o666//⽂件的权限设置
,encoding:'utf8'//写⼊⽂件的字符的编码 ,highWaterMark:3//最⾼⽔位线
,start:0 //写⼊⽂件的起始索引位置 ,autoClose:true//是否⾃动关闭⽂档})
以此⽤于在⽇志记录后于本地⽣成⽇志⽂件。
3、new console.Console(stdout[, stderr][, ignoreErrors])
在 node.js 中 console 模块提供了基础的调试功能。使⽤很简单,常⽤的API主要有 console.log()、console.error()。此外,可以基于Console类,⽅便的扩展出⾃⼰的console实例,⽐如把调试信息打印到⽂件⾥,⽽部署输出在控制台上。
const fs = require('fs');
const file = fs.createWriteStream('./outPut.txt');let logger = new console.Console(file, file);// 调⽤
logger.log('hello');复制代码
此时,调⽤logger.log内容将会输出到 outPut.txt⾥,⽽不是打印到控制台。
4、node.js ⽣成⽇志⽂件⽅法
在了解完 node 的两个模块fs和console后,我们开始写这个简单⽽实⽤的⽅法,先创建 index.js:
// index.js
const fs = require('fs');let options = { flags: 'a', //
encoding: 'utf8', // utf8编码}
let stderr = fs.createWriteStream('./a.log', options);// 创建logger
let logger = new console.Console(stderr);// 真实项⽬中调⽤下⾯即可记录错误⽇志logger.log('这是⼀条⽇志1');logger.log('这是⼀条⽇志2');logger.log('这是⼀条⽇志3');
打开终端执⾏node logger.js:
$ node index.js
此时根⽬录将会⽣成 a.log ⽂件
好了,最简易版的就这样完成了。但是当时在此执⾏node logger.js时,⽇志将会累加上去,这样会增加本地存储的负担。所以我希望的是每次执⾏的时候清空⼀下。
那就来改写⼀下 index.js, node.js 中改写依旧使⽤fs的⽅法fs.writeFile:
// 清空a.log内容
fs.writeFile('./a.log', '', function (err) { if(err){
console.log(err); }});
复制代码
⾄此,我期望得到的⽇志⽂件就完成了,完整代码为:
// index.js
const fs = require('fs');let options = { flags: 'a', //
encoding: 'utf8', // utf8编码}
let stderr = fs.createWriteStream('./a.log', options);// 创建logger
let logger = new console.Console(stderr);fs.writeFile('./a.log', '', function (err) { if(err){
console.log(err); }});
// 真实项⽬中调⽤下⾯即可记录错误⽇志logger.log('这是⼀条⽇志1');logger.log('这是⼀条⽇志2');logger.log('这是⼀条⽇志3');
⼤家可以复制到⾃⼰的本地去跑跑看,终端执⾏⼀下:
node index.js
5、其他
当然在此基础上你可以拓展其它内容,⽐如给⽇志中增加时间戳、区分⽇志类型储存等。
因篇幅问题不能全部显示,请点此查看更多更全内容