express項目相關內容只能在console中打印相關的日誌,但是對於一些發佈環境還是需要了解log日誌相關框架的使用。
log4js的相關內容接入說明和配置。(簡單的例子其實都在readMe.md中)
================================================================================================================================
var log4js = require('log4js');
log4js.configure({
appenders: [
{
type: 'console'
},
{
type: 'file',
filename: 'logs/common.log',
maxLogSize: 1024,
backups:4,
category: 'normal'
}
],
replaceConsole: true
});
其中appenders中是配置的對於日誌不同樣式的相關參數配置,replaceConsole參數控制是否使用log4js替代nodejs的常規後臺日誌輸出。
======================== 以下爲封裝的一些log組件函數 =========================================
代碼源自http://blog.fens.me/nodejs-log4js/
==========================================================================================
// logger 封裝
exports.logger=function(name){
var logger = log4js.getLogger(name);
logger.setLevel('INFO');
return logger;
}
==========================================================================================
app.use(log4js.connectLogger(this.logger('normal'), {level:'auto', format:':method :url'}));
配置自動日誌等級和訪問方法日誌輸出。
==========================================================================================
var logger = require('../app').logger('normal');
在路由的router的文件中引用,從而使用log
==========================================================================================
問題一:
將logger函數暴露給其他的router,包括上面log配置都是配置在app.js的文件中,但是在配置時候碰見過一些問題。var logger = require('../app').logger('normal');
^
TypeError: Object #<Object> has no method 'logger'
但是我的logger封裝已經寫到app的文件中了。
導致原因:
1.logger封裝的方法過於靠下了,需要把此段代碼上移到log配置之後。
2.檢查app文件路徑在引用的時候是否正確。
問題二:
需要將引用中的logger標示和log配置中category,這樣才能讓日誌文件輸出日誌。