国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

Node.js利用console輸出日志文件的方法示例

2024-05-06 16:43:58
字體:
供稿:網(wǎng)友

通常我們在寫Node.js程序時,都習慣使用console.log打印日志信息,但這也僅限于控制臺輸出,有時候我們需要將信息輸出到日志文件中,實際上利用console也可以達到這個目的的,今天就來簡單介紹一下。

我們首先創(chuàng)建如下文件:

// index.jslet fs = require('fs');let options = {  flags: 'a',     // append模式  encoding: 'utf8',  // utf8編碼};let stdout = fs.createWriteStream('./stdout.log', options);let stderr = fs.createWriteStream('./stderr.log', options);// 創(chuàng)建loggerlet logger = new console.Console(stdout, stderr);for (let i = 0; i < 100; i++) {  logger.log(`log message ${i}`);  logger.error(`err message ${i}`);}

在上面代碼中,我們其實是創(chuàng)建了一個console.Console類的實例,該類需要指定兩個參數(shù),即標準輸出流和標準錯誤輸出流,正常情況下,實際上是對應了process.stdout和process.stderr,以上的代碼中,我們將這兩個輸出流改為了文件輸出流,并指定為文件追加模式,這樣即可將日志信息輸出到指定的文件中去。運行上面的代碼,會生成stdout.log和stderr.log兩個文件。

stdout.log文件內(nèi)容如下:

log message 0log message 1log message 2log message 3log message 4log message 5log message 6log message 7log message 8log message 9log message 10...

stderr.log文件內(nèi)容如下:

err message 0err message 1err message 2err message 3err message 4err message 5err message 6err message 7err message 8err message 9err message 10...

看上去信息還比較簡單,不像是日志文件的樣子,我們或許得為每條日志添加一個時間才行,下面先為Date對象添加一個format的原型方法:

// 添加format方法Date.prototype.format = function (format) {  if (!format) {    format = 'yyyy-MM-dd HH:mm:ss';  }    // 用0補齊指定位數(shù)  let padNum = function (value, digits) {    return Array(digits - value.toString().length + 1).join('0') + value;  };  // 指定格式字符  let cfg = {    yyyy: this.getFullYear(),             // 年    MM: padNum(this.getMonth() + 1, 2),        // 月    dd: padNum(this.getDate(), 2),           // 日    HH: padNum(this.getHours(), 2),          // 時    mm: padNum(this.getMinutes(), 2),         // 分    ss: padNum(this.getSeconds(), 2),         // 秒    fff: padNum(this.getMilliseconds(), 3),      // 毫秒  };  return format.replace(/([a-z]|[A-Z])(/1)*/ig, function (m) {    return cfg[m];  });}

然后再改寫前面的主文件:

// index.jslet fs = require('fs');let options = {  flags: 'a',     // append模式  encoding: 'utf8',  // utf8編碼};let stdout = fs.createWriteStream('./stdout.log', options);let stderr = fs.createWriteStream('./stderr.log', options);// 創(chuàng)建loggerlet logger = new console.Console(stdout, stderr);// 添加format方法Date.prototype.format = function (format) {  if (!format) {    format = 'yyyy-MM-dd HH:mm:ss';  }    // 用0補齊指定位數(shù)  let padNum = function (value, digits) {    return Array(digits - value.toString().length + 1).join('0') + value;  };  // 指定格式字符  let cfg = {    yyyy: this.getFullYear(),             // 年    MM: padNum(this.getMonth() + 1, 2),        // 月    dd: padNum(this.getDate(), 2),           // 日    HH: padNum(this.getHours(), 2),          // 時    mm: padNum(this.getMinutes(), 2),         // 分    ss: padNum(this.getSeconds(), 2),         // 秒    fff: padNum(this.getMilliseconds(), 3),      // 毫秒  };  return format.replace(/([a-z]|[A-Z])(/1)*/ig, function (m) {    return cfg[m];  });}for (let i = 0; i < 100; i++) {  let time = new Date().format('yyyy-MM-dd HH:mm:ss.fff');  logger.log(`[${time}] - log message ${i}`);  logger.error(`[${time}] - err message ${i}`);}

重新運行程序,然后查看兩個日志文件的內(nèi)容。

stdout.log內(nèi)容如下:

[2018-04-27 07:30:54.309] - log message 0[2018-04-27 07:30:54.312] - log message 1[2018-04-27 07:30:54.312] - log message 2[2018-04-27 07:30:54.312] - log message 3[2018-04-27 07:30:54.312] - log message 4[2018-04-27 07:30:54.312] - log message 5[2018-04-27 07:30:54.312] - log message 6[2018-04-27 07:30:54.312] - log message 7[2018-04-27 07:30:54.312] - log message 8[2018-04-27 07:30:54.312] - log message 9[2018-04-27 07:30:54.312] - log message 10...

stderr.log內(nèi)容如下:

[2018-04-27 07:30:54.309] - err message 0[2018-04-27 07:30:54.312] - err message 1[2018-04-27 07:30:54.312] - err message 2[2018-04-27 07:30:54.312] - err message 3[2018-04-27 07:30:54.312] - err message 4[2018-04-27 07:30:54.312] - err message 5[2018-04-27 07:30:54.312] - err message 6[2018-04-27 07:30:54.312] - err message 7[2018-04-27 07:30:54.312] - err message 8[2018-04-27 07:30:54.312] - err message 9[2018-04-27 07:30:54.312] - err message 10...

這樣一個簡單的日志輸出就完成了。

參考資料:https://nodejs.org/api/console.html

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 六盘水市| 平原县| 张家口市| 商城县| 葫芦岛市| 独山县| 横山县| 平阴县| 木里| 宜阳县| 合江县| 昌宁县| 西昌市| 凯里市| 贺州市| 桂平市| 永城市| 张掖市| 长沙县| 怀宁县| 秦安县| 香河县| 迁安市| 木兰县| 来宾市| 翁源县| 阆中市| 都江堰市| 宁强县| 甘肃省| 游戏| 忻州市| 沙雅县| 慈利县| 友谊县| 华容县| 华容县| 涟源市| 邓州市| 丰顺县| 青岛市|