天天看點

node.js學習筆記(23) log4js

在前面的筆記裡講過express-genrator建立的express項目使用morgan日志,将morgan作為應用級中間件,express項目就會自動記錄http通路日志。

morgan預設了5中日志的格式,也可以讓使用者自定義日志格式,是一個簡單使用的日志中間件。

但是,我用java程式設計多年,非常清楚log4j的強大與好用。是以,僅僅log4js這個名字就已經讓我先入為主了,盡管morgan也是一個不錯的日志中間件。

log4js相比morgan,更加強大,更加貼近java程式員的習慣。

<b>section 1</b>

<b>

</b>

讓我們從一個簡單是例子來開始log4js的體驗:

建立一個log4js-minimal.js檔案:

運作效果:

這就是一個最最簡單的log4js執行個體:啟動,debug資訊輸出到控制台,over。

<b>section 2</b>

再來一個輸出到檔案,log4js-file.js:

運作:

運作完,我們可以看到日志輸出到檔案logs/cheese.log

<b>section 3</b>

log4js-file.js也可以這樣配置,效果是一樣的。

log4js-configure.js:

<b>section 4</b>

我們在javaee中使用log4j的時候,總是習慣配置log4j.properties,有沒有?!

log4js也可以從配置檔案來讀取配置。

configfile.json:

log4js-configfile.js:

<b>section 5</b>

log4js完全想morgan一樣當express的中間件用。

來試一下

建立一個項目log-log4js:

可以這樣修改app.js:

運作并測試log-log4js:

這時,可以看到logs有一個日志檔案access.log

<b>section 6</b>

看到這兒,有沒有發現section2中的代碼輸出了很多日志資訊,而在日志檔案中卻隻有兩行。

log4js一定有比morgan更強大的地方,否則它就不配叫log4js。

log4js的輸出級别有6個,從低到高分别是 trace, debug, info, warn, error, fatal。

在section2的執行個體中,設定了log的輸出級别是error,是以低于error級别的trace,debug,info和warn都沒有輸出。

設定輸出級别的好處尤其展現在測試環境和生産環境,測試環境中跟蹤測試,往往需要非常詳細的debug資訊,而在生産環境中運作穩定版本則不需要過多的日志資訊,隻需要必要的warn,error或fetal。