成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

NPM酷庫:winston 多路日志記錄

荊兆峰 / 3286人閱讀

摘要:昨天,我們認(rèn)識(shí)了庫的用法,用來控制輸出調(diào)試日志。今天我們?cè)倭私庖粋€(gè)日志記錄的庫,一個(gè)多路傳輸?shù)娜罩居涗泿臁K^多路傳輸,是指,你可以自定義多個(gè)日志儲(chǔ)存驅(qū)動(dòng),比如,將日志輸出到終端的同時(shí),將重要日志記錄到文件中,甚至寫到數(shù)據(jù)庫中。

NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。

昨天,我們認(rèn)識(shí)了debug庫的用法,用來控制輸出調(diào)試日志。但是,debug的特性適合于開發(fā)調(diào)試,并不適合程序記錄運(yùn)行日志。

今天我們?cè)倭私庖粋€(gè)日志記錄的庫:winston,一個(gè)多路傳輸?shù)娜罩居涗泿臁?/p>

所謂多路傳輸,是指,你可以自定義多個(gè)日志儲(chǔ)存驅(qū)動(dòng),比如,將日志輸出到終端的同時(shí),將重要日志記錄到文件中,甚至寫到數(shù)據(jù)庫中。

winston 用法

winston 支持RFC5424標(biāo)準(zhǔn)的日志等級(jí),即debug/info/notice/warning/error等,每一個(gè)日志等級(jí)都實(shí)現(xiàn)為一個(gè)函數(shù),你可以直接調(diào)用對(duì)應(yīng)的函數(shù),來表明你想要輸出日志的重要程度。

const winston = require("winston");
 
winston.log("info", "Hello distributed log files!");
winston.info("Hello again distributed logs");

winston.level = "debug";
winston.log("debug", "Now my debug messages are written to console!");
配置多路日志傳輸
winston.configure({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: "somefile.log" })
  ]
});

上方代碼中就為winston設(shè)置了兩個(gè)日志儲(chǔ)存驅(qū)動(dòng),winston會(huì)直接將日志輸出到控制臺(tái),同時(shí),將日志保存在 somefile.log 文件中。

實(shí)例化Logger對(duì)象

在前文中,我們使用的是 winston 默認(rèn)的日志器對(duì)象(Logger),默認(rèn)的Logger方便我們直接訪問winston接口,此外,我們還可以實(shí)例化一個(gè)我們需要的Logger對(duì)象:

const logger = new winston.Logger({
  level: "error",
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: "somefile.log" })
  ]
});

在上述代碼中,我們實(shí)例化了一個(gè)新的Logger對(duì)象,并且指定了logger實(shí)例的日志記錄級(jí)別為error。當(dāng)然,你仍然可以調(diào)用 logger.info("info text") 來輸出info級(jí)別的日志,但這些日志會(huì)被過濾掉,winston只會(huì)講error級(jí)別以上的日志輸出到控制臺(tái)和文件中。那么,我們能不能自定義不同日志存儲(chǔ)驅(qū)動(dòng)的級(jí)別呢?

為存儲(chǔ)驅(qū)動(dòng)定義不同日志級(jí)別
const logger = new (winston.Logger)({
  transports: [
    new (winston.transports.File)({
      name: "info-file",
      filename: "filelog-info.log",
      level: "info"
    }),
    new (winston.transports.File)({
      name: "error-file",
      filename: "filelog-error.log",
      level: "error"
    })
  ]
});

在上述代碼中,我們將日志同時(shí)輸出到兩個(gè)文件中,其中一個(gè)只用來保存 error 級(jí)別以上的錯(cuò)誤日志,另外一個(gè)則用來保存info級(jí)別以上的詳細(xì)日志信息。

其他用法

winston 提供了非常強(qiáng)大的功能來適應(yīng)不同的日志記錄場(chǎng)景,NPM酷庫文章的目的僅僅是讓你了解到在某個(gè)應(yīng)用領(lǐng)域有哪些庫可以大概解決某些問題,在你將來的工作中,可以快速從腦海中檢索到相關(guān)的庫,但是并不需要你認(rèn)真學(xué)習(xí)每一個(gè)庫的每一個(gè)用法。所以,篇幅所限,winston的其他方面的用法就不再敘述,如果恰巧你當(dāng)前工作需要winston之類的庫,你可以再深入研究winston和其他參考資料。

參考資料

winston: https://github.com/winstonjs/...

RFC 5424: https://tools.ietf.org/html/r...

歡迎關(guān)注公眾號(hào):梁興臣

每天了解一個(gè)NPM庫,一年后成為Node.js高手

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90675.html

相關(guān)文章

  • NPM酷庫:log4js JavaScript日志框架

    摘要:酷庫,每天兩分鐘,了解一個(gè)流行庫。今天,我們繼續(xù)認(rèn)識(shí)另一個(gè)日志框架,這個(gè)框架和有些類似,也提供了多路日志輸出的功能。中稱之為,而中稱之為輸出源。日志分類,可以用來標(biāo)志不同的程序模塊,類似庫中的效果,默認(rèn)分類為。 NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。 前兩天,我們認(rèn)識(shí)了 debug 庫 和 winston 庫,兩款管理程序日志的庫,其中debug偏向于適合開發(fā)調(diào)試,winsto...

    nicercode 評(píng)論0 收藏0
  • NPM酷庫:debug,控制調(diào)試日志

    摘要:今天我們要了解的庫是,一個(gè)專門用來控制輸出調(diào)試日志的庫。但是,隨著項(xiàng)目規(guī)模增加,控制臺(tái)輸出的日志就會(huì)堆積很多而不可讀。庫就是一款專門控制日志輸出的庫,能夠完美解決我們的上述需求。 NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。 今天我們要了解的庫是debug,一個(gè)專門用來控制輸出調(diào)試日志的庫。 通常,我們直接使用 console.log 輸出調(diào)試日志,使用console對(duì)象直接將日志輸...

    funnyZhang 評(píng)論0 收藏0
  • NPM酷庫:depd 聲明棄用功能

    摘要:有沒有優(yōu)雅的方式呢今天我們了解的庫就是專門來控制輸出棄用功能警告日志的。聲明棄用函數(shù)使用包裹一層我們要廢棄的函數(shù),那么這個(gè)函數(shù)在被第一次調(diào)用時(shí),就會(huì)自動(dòng)輸出警告信息。聲明棄用屬性使用聲明對(duì)象指定的屬性被棄用。 NPM酷庫,每天兩分鐘,了解一個(gè)流行NPM庫。 Node.js 高效率編程的基礎(chǔ)是大量的NPM開源庫,開發(fā)應(yīng)用時(shí),找特定領(lǐng)域的NPM庫要比自己從頭寫代碼要高效得多。如果某個(gè)領(lǐng)域沒...

    paulquei 評(píng)論0 收藏0
  • node錯(cuò)誤處理與日志

    摘要:并不自帶,需要引入庫運(yùn)行日志文件,此時(shí)在目錄下就生成了今天的日志歡迎訪問我的博客 node項(xiàng)目中的錯(cuò)誤處理 node中Error對(duì)象的使用 使用captureStackTrace方法加入自帶的錯(cuò)誤信息 // Error對(duì)象自帶的屬性 Error.captureStackTrace // 如何使用captureStackTrace var obj = { message: so...

    GT 評(píng)論0 收藏0
  • 4.2 數(shù)據(jù)庫表/Sequelize Mysql-博客后端Api-NodeJs+Express+My

    功能梳理完了以后,咱們就可以開始數(shù)據(jù)庫表設(shè)計(jì)了: 數(shù)據(jù)庫表圖: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打開Navicat Premium 創(chuàng)建數(shù)據(jù)庫 blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 課前學(xué)習(xí):1、Sequ...

    nicercode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<