express log4js 入門及相關封裝

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,這樣才能讓日誌文件輸出日誌。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章