在前面的筆記裡講過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。