1. 程式人生 > 程式設計 >Node.js 在本地生成日誌檔案的方法

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 的兩個模組fsconsole後,我們開始寫這個簡單而實用的方法,先建立 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 在本地生成日誌檔案的方法,希望對大家有所幫助!