Node.js 在本地生成日志文件的方法
平常都使用console來(lái)打印 node 腳本執(zhí)行時(shí)需要看到的信息,但這些信息也就只能在控制臺(tái)查看。假如你希望將打印的信息輸出到日志(log)文件查看的話,那就往下看看吧。
1、前言
期望:
- 每次運(yùn)行腳本時(shí),生成log日志存儲(chǔ)到本地
- 每次執(zhí)行腳本,之前日志內(nèi)容清空
需要了解的知識(shí)點(diǎn):
fs new console.Console
2、什么是 fs
使用 node.js 對(duì)日志進(jìn)行存儲(chǔ),就一定會(huì)對(duì)本地文件的增刪改查,那么我們需要用到fs。
如果你寫(xiě)過(guò) node,想必你應(yīng)該見(jiàn)過(guò)它fs,fs全稱為文件系統(tǒng)(File System)。文件系統(tǒng)簡(jiǎn)單來(lái)說(shuō)就是通過(guò) Node 來(lái)操作系統(tǒng)中的文件。
fs 不需要 npm install,node 中自帶,直接引用即可:
const fs = require('fs');
本文將會(huì)使用 fs 的fs.createWriteStream(path, options)方法,用于創(chuàng)建可讀流,用法如下:
/**
* @param1 path
* @param2 options
*/
let fs = require('fs');
let ws = fs.createWriteStream('./1.txt',{
flags:'w'//文件的打開(kāi)模式
,mode:0o666//文件的權(quán)限設(shè)置
,encoding:'utf8'//寫(xiě)入文件的字符的編碼
,highWaterMark:3//最高水位線
,start:0 //寫(xiě)入文件的起始索引位置
,autoClose:true//是否自動(dòng)關(guān)閉文檔
})
以此用于在日志記錄后于本地生成日志文件。
3、new console.Console(stdout[, stderr][, ignoreErrors])
在 node.js 中 console 模塊提供了基礎(chǔ)的調(diào)試功能。使用很簡(jiǎn)單,常用的API主要有 console.log()、console.error()。
此外,可以基于Console類,方便的擴(kuò)展出自己的console實(shí)例,比如把調(diào)試信息打印到文件里,而部署輸出在控制臺(tái)上。
const fs = require('fs');
const file = fs.createWriteStream('./outPut.txt');
let logger = new console.Console(file, file);
// 調(diào)用
logger.log('hello');
此時(shí),調(diào)用logger.log內(nèi)容將會(huì)輸出到 outPut.txt里,而不是打印到控制臺(tái)。
4、node.js 生成日志文件方法
在了解完 node 的兩個(gè)模塊fs和console后,我們開(kāi)始寫(xiě)這個(gè)簡(jiǎn)單而實(shí)用的方法,先創(chuàng)建 index.js
// index.js
const fs = require('fs');
let opions = {
flags: 'a', //
encoding: 'utf8', // utf8編碼
}
let stderr = fs.createWriteStream('./a.log', options);
// 創(chuàng)建logger
let logger = new console.Console(stderr);
// 真實(shí)項(xiàng)目中調(diào)用下面即可記錄錯(cuò)誤日志
logger.log('這是一條日志1');
logger.log('這是一條日志2');
logger.log('這是一條日志3');
打開(kāi)終端執(zhí)行node logger.js:
$ node index.js
此時(shí)根目錄將會(huì)生成 a.log 文件
好了,最簡(jiǎn)易版的就這樣完成了。但是當(dāng)時(shí)在此執(zhí)行node logger.js時(shí),日志將會(huì)累加上去,這樣會(huì)增加本地存儲(chǔ)的負(fù)擔(dān)。所以我希望的是每次執(zhí)行的時(shí)候清空一下。
那就來(lái)改寫(xiě)一下 index.js, node.js 中改寫(xiě)依舊使用fs的方法fs.writeFile:
// 清空a.log內(nèi)容
fs.writeFile('./a.log', '', function (err) {
if(err){
console.log(err);
}
});
至此,我期望得到的日志文件就完成了。完整代碼為:
const fs = require('fs');
let options = {
flags: 'a', //
encoding: 'utf8', // utf8編碼
}
let stderr = fs.createWriteStream('./a.log', options);
// 創(chuàng)建logger
let logger = new console.Console(stderr);
fs.writeFile('./a.log', '', function (err) {
if(err){
console.log(err);
}
});
// 真實(shí)項(xiàng)目中調(diào)用下面即可記錄錯(cuò)誤日志
logger.log('這是一條日志1');
logger.log('這是一條日志2');
logger.log('這是一條日志3');
可以將此封裝起來(lái),然后在需要的地方去調(diào)用。logger.log('你需要記錄的日志')即可。
5、其他
當(dāng)然在此基礎(chǔ)上你可以拓展其它內(nèi)容,比如給日志中增加時(shí)間戳、區(qū)分日志類型儲(chǔ)存等。
以上,如有問(wèn)題或建議歡迎指正。
參考資料:
總結(jié)
以上所述是小編給大家介紹的Node.js 在本地生成日志文件的方法,希望對(duì)大家有所幫助!
相關(guān)文章
node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能
這篇文章主要為大家詳細(xì)介紹了node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
node.js中express-session配置項(xiàng)詳解
本篇文章主要介紹了node.js中express-session配置項(xiàng)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
NodeJs之word文件生成與解析的實(shí)現(xiàn)代碼
這篇文章主要介紹了NodeJs之word文件生成與解析的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
詳解nodejs微信公眾號(hào)開(kāi)發(fā)——1.接入微信公眾號(hào)
本篇文章主要介紹了詳解nodejs微信公眾號(hào)開(kāi)發(fā)——1.接入微信公眾號(hào),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04
NodeJs crypto加密制作token的實(shí)現(xiàn)代碼
這篇文章主要介紹了NodeJs crypto加密制作token的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Node.js?連接?MySql?統(tǒng)計(jì)組件屬性的使用情況解析
這篇文章主要為大家介紹了Node.js?連接?MySql?統(tǒng)計(jì)組件屬性的使用情況解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

