摘要:昨天,我們認識了庫的用法,用來控制輸出調試日志。今天我們再了解一個日志記錄的庫,一個多路傳輸的日志記錄庫。所謂多路傳輸,是指,你可以自定義多個日志儲存驅動,比如,將日志輸出到終端的同時,將重要日志記錄到文件中,甚至寫到數據庫中。
NPM酷庫,每天兩分鐘,了解一個流行NPM庫。
昨天,我們認識了debug庫的用法,用來控制輸出調試日志。但是,debug的特性適合于開發調試,并不適合程序記錄運行日志。
今天我們再了解一個日志記錄的庫:winston,一個多路傳輸的日志記錄庫。
所謂多路傳輸,是指,你可以自定義多個日志儲存驅動,比如,將日志輸出到終端的同時,將重要日志記錄到文件中,甚至寫到數據庫中。
winston 用法winston 支持RFC5424標準的日志等級,即debug/info/notice/warning/error等,每一個日志等級都實現為一個函數,你可以直接調用對應的函數,來表明你想要輸出日志的重要程度。
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設置了兩個日志儲存驅動,winston會直接將日志輸出到控制臺,同時,將日志保存在 somefile.log 文件中。
實例化Logger對象在前文中,我們使用的是 winston 默認的日志器對象(Logger),默認的Logger方便我們直接訪問winston接口,此外,我們還可以實例化一個我們需要的Logger對象:
const logger = new winston.Logger({ level: "error", transports: [ new (winston.transports.Console)(), new (winston.transports.File)({ filename: "somefile.log" }) ] });
在上述代碼中,我們實例化了一個新的Logger對象,并且指定了logger實例的日志記錄級別為error。當然,你仍然可以調用 logger.info("info text") 來輸出info級別的日志,但這些日志會被過濾掉,winston只會講error級別以上的日志輸出到控制臺和文件中。那么,我們能不能自定義不同日志存儲驅動的級別呢?
為存儲驅動定義不同日志級別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" }) ] });
在上述代碼中,我們將日志同時輸出到兩個文件中,其中一個只用來保存 error 級別以上的錯誤日志,另外一個則用來保存info級別以上的詳細日志信息。
其他用法winston 提供了非常強大的功能來適應不同的日志記錄場景,NPM酷庫文章的目的僅僅是讓你了解到在某個應用領域有哪些庫可以大概解決某些問題,在你將來的工作中,可以快速從腦海中檢索到相關的庫,但是并不需要你認真學習每一個庫的每一個用法。所以,篇幅所限,winston的其他方面的用法就不再敘述,如果恰巧你當前工作需要winston之類的庫,你可以再深入研究winston和其他參考資料。
參考資料winston: https://github.com/winstonjs/...
RFC 5424: https://tools.ietf.org/html/r...
歡迎關注公眾號:梁興臣每天了解一個NPM庫,一年后成為Node.js高手
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90675.html
摘要:酷庫,每天兩分鐘,了解一個流行庫。今天,我們繼續認識另一個日志框架,這個框架和有些類似,也提供了多路日志輸出的功能。中稱之為,而中稱之為輸出源。日志分類,可以用來標志不同的程序模塊,類似庫中的效果,默認分類為。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 前兩天,我們認識了 debug 庫 和 winston 庫,兩款管理程序日志的庫,其中debug偏向于適合開發調試,winsto...
摘要:今天我們要了解的庫是,一個專門用來控制輸出調試日志的庫。但是,隨著項目規模增加,控制臺輸出的日志就會堆積很多而不可讀。庫就是一款專門控制日志輸出的庫,能夠完美解決我們的上述需求。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 今天我們要了解的庫是debug,一個專門用來控制輸出調試日志的庫。 通常,我們直接使用 console.log 輸出調試日志,使用console對象直接將日志輸...
摘要:有沒有優雅的方式呢今天我們了解的庫就是專門來控制輸出棄用功能警告日志的。聲明棄用函數使用包裹一層我們要廢棄的函數,那么這個函數在被第一次調用時,就會自動輸出警告信息。聲明棄用屬性使用聲明對象指定的屬性被棄用。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 Node.js 高效率編程的基礎是大量的NPM開源庫,開發應用時,找特定領域的NPM庫要比自己從頭寫代碼要高效得多。如果某個領域沒...
摘要:并不自帶,需要引入庫運行日志文件,此時在目錄下就生成了今天的日志歡迎訪問我的博客 node項目中的錯誤處理 node中Error對象的使用 使用captureStackTrace方法加入自帶的錯誤信息 // Error對象自帶的屬性 Error.captureStackTrace // 如何使用captureStackTrace var obj = { message: so...
功能梳理完了以后,咱們就可以開始數據庫表設計了: 數據庫表圖: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打開Navicat Premium 創建數據庫 blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 課前學習:1、Sequ...
閱讀 1325·2021-10-27 14:14
閱讀 3579·2021-09-29 09:34
閱讀 2481·2019-08-30 15:44
閱讀 1728·2019-08-29 17:13
閱讀 2576·2019-08-29 13:07
閱讀 874·2019-08-26 18:26
閱讀 3349·2019-08-26 13:44
閱讀 3214·2019-08-26 13:37