中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

console打印日志信息的方法-創(chuàng)新互聯(lián)

這篇文章主要介紹console打印日志信息的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

為淄博等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及淄博網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、做網(wǎng)站、淄博網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

// index.js
let 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)建logger
let logger = new console.Console(stdout, stderr);
for (let i = 0; i < 100; i++) {
  logger.log(`log message ${i}`);
  logger.error(`err message ${i}`);
}

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

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

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

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

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

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

// 添加format方法
Date.prototype.format = function (format) {
  if (!format) {
    format = 'yyyy-MM-dd HH:mm:ss';
  }
  
  // 用0補(bǔ)齊指定位數(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),          // 時(shí)
    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];
  });
}

然后再改寫(xiě)前面的主文件:

// index.js
let 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)建logger
let logger = new console.Console(stdout, stderr);
// 添加format方法
Date.prototype.format = function (format) {
  if (!format) {
    format = 'yyyy-MM-dd HH:mm:ss';
  }
  
  // 用0補(bǔ)齊指定位數(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),          // 時(shí)
    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}`);
}

重新運(yùn)行程序,然后查看兩個(gè)日志文件的內(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
...

以上是“console打印日志信息的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:console打印日志信息的方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://www.rwnh.cn/article22/copecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、域名注冊(cè)、用戶體驗(yàn)、定制開(kāi)發(fā)、面包屑導(dǎo)航小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
上思县| 长汀县| 乐清市| 繁峙县| 永康市| 新河县| 通辽市| 于田县| 焉耆| 武城县| 中卫市| 东辽县| 武定县| 龙游县| 家居| 和硕县| 云龙县| 青川县| 新和县| 北京市| 安义县| 探索| 潞西市| 敖汉旗| 呼和浩特市| 鄢陵县| 洪江市| 霍林郭勒市| 法库县| 阿荣旗| 漾濞| 关岭| 噶尔县| 双桥区| 洛南县| 延津县| 凤翔县| 桂平市| 长顺县| 屯门区| 宁津县|