您的当前位置:首页正文

Node.js如何在本地生成日志文件

2021-04-02 来源:客趣旅游网
Node.js如何在本地⽣成⽇志⽂件

平常都使⽤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、其他

当然在此基础上你可以拓展其它内容,⽐如给⽇志中增加时间戳、区分⽇志类型储存等。

因篇幅问题不能全部显示,请点此查看更多更全内容