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

資源搜索網站大全https://55wd.com 廣州品牌設計公司http://www.maiqicn.com

5、其他

當然在此基礎上你可以拓展其它內容,比如給日志中增加時間戳區分日志類型儲存等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM