NPM酷庫,天天兩分鐘,瞭解一個流行NPM庫。html
前兩天,咱們認識了 debug 庫 和 winston 庫,兩款管理程序日誌的庫,其中debug偏向於適合開發調試,winston則更適合在一個完整的 Node.js 應用中管理平常日誌記錄。node
今天,咱們繼續認識另外一個日誌框架 log4js,這個框架和 winston 有些相似,也提供了多路日誌輸出的功能。所謂多路,意思是你能夠自定義多個日誌儲存驅動,好比,將日誌輸出到終端的同時,將重要日誌記錄到文件中,甚至寫到數據庫中。 winston 中稱之爲 Transports,而log4js 中稱之爲 Appenders (輸出源)。git
注意,雖然 log4js 的名字很像JAVA的日誌庫 log4j,但二者沒什麼關係,而且接口也是不一樣的
const log4js = require('log4js'); const logger = log4js.getLogger(); logger.level = 'debug'; logger.debug("Some debug messages");
上邊就是log2js 最簡單的用法,程序會將日誌輸出到控制檯:github
[2018-01-06T12:23:43.706] [DEBUG] default - Some debug messages
注意,代碼中將日誌輸出等級設置爲debug
,程序會輸出DEBUG級別以上的日誌,若是不設置,默認級別爲OFF
即關閉全部日誌輸出!數據庫
日誌級別,debug/info/error 等,參考 RFC5424。框架
日誌分類,能夠用來標誌不一樣的程序模塊,相似debug
庫中的效果,默認分類爲 default
。函數
輸出源,你能夠選擇不一樣的輸出源將日誌輸出到控制檯、文件、數據庫,甚至Email。ui
log4js 的主要日誌接口,能夠實例多個Logger,每個Logger均可選地設置 Category,因此咱們的應用中,不一樣模塊實例化不一樣的Logger對象,輸出的日誌中就會記錄下不一樣模塊的日誌輸出。spa
Layout是日誌輸出時用來格式化日誌的函數,你能夠自定義不一樣的Layout函數,用來自定義日誌格式。debug
每一次調用日誌記錄函數就會生成一個LogEvent:
logger.debug("Some debug messages");
LogEvent 中包含當前時間戳、日誌級別、分類等信息。
log4js: https://github.com/log4js-nod...
log4js文檔: https://log4js-node.github.io...
RFC 5424: https://tools.ietf.org/html/r...
天天瞭解一個NPM庫,一年後成爲Node.js高手