Node.js 在本地生成日誌檔案的方法
平常都使用console
來列印 node 指令碼執行時需要看到的資訊,但這些資訊也就只能在控制檯檢視。假如你希望將列印的資訊輸出到日誌(log)檔案檢視的話,那就往下看看吧。
1、前言
期望:
- 每次執行指令碼時,生成log日誌儲存到本地
- 每次執行指令碼,之前日誌內容清空
需要了解的知識點:
fs 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 opions = { 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); } });
至此,我期望得到的日誌檔案就完成了。完整程式碼為:
const fs = require('fs'); let options = { flags: 'a',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');
可以將此封裝起來,然後在需要的地方去呼叫。logger.log('你需要記錄的日誌')
即可。
5、其他
當然在此基礎上你可以拓展其它內容,比如給日誌中增加時間戳、區分日誌型別儲存等。
以上,如有問題或建議歡迎指正。
參考資料:
nodejs.cn/api/console…
nodejs.cn/api/fs.html
總結
以上所述是小編給大家介紹的Node.js 在本地生成日誌檔案的方法,希望對大家有所幫助!