我們使用express框架時,開發模式用node或者supervisor啟動nodejs應用時,控制台都是顯示如下的日誌。
get /css/bootstrap.min.css 3041msget /css/my.css 3040ms
get /js/bootstrap.min.js 3044ms
get /js/jquery-1.9.1.min.js 3046ms
get /js/holder.js 3043ms
get /cat/json/latest 200 6ms
get /cat/json/master 200 4ms
get /cat/json/classic 200 2ms
get /about 200 6ms
get /css/bootstrap.min.css 3042ms
get /css/my.css 3042ms
get /js/bootstrap.min.js 3042ms
get /js/jquery-1.9.1.min.js 3041ms
get /js/holder.js 3041ms
get /js/bootstrap.min.js 3041ms
get / 3046ms
get /js/jquery-1.9.1.min.js 3042ms
get /css/my.css 3041ms
get /css/bootstrap.min.css 3041ms
get /js/bootstrap.min.js 3042ms
get /js/holder.js 3042ms
get /cat/json/latest 200 3ms
get /cat/json/master 200 2ms
get /cat/json/classic 200 2ms
get /admin/ 30413ms
get /css/bootstrap.min.css 3043ms
get /js/jquery-1.9.1.min.js 3042ms
get /css/my.css 3042ms
get /js/bootstrap.min.js 3041ms
get /js/holder.js 304 2ms
我們也可以在**中,用console.log()列印一些控制台日誌。
修改routes/index.js
exports.index = function(req, res));
};
訪問頁面,結果如下:
this is an index page!get / 30419msget /css/bootstrap.min.css 3044ms
get /css/my.css 3042ms
get /js/jquery-1.9.1.min.js 30438ms
get /js/holder.js 30429ms
get /js/bootstrap.min.js 304 28ms
這樣的輸出的結果,都是在控制台顯示,一旦server重啟日誌就丟失了。對於程式開發來說,這樣的輸出已經夠用了。但是在生產環境上,我們希望能把控制台的輸出,儲存到檔案中,而且需要更多的資訊,不僅僅是預設的簡化的日誌資訊。
由於express框架沒有日誌功能,我們需要引入log4js包來完成這個功能。
1、安裝
npm install log4js
2、修改專案入口配置檔案,如日誌分析專案express.js
var log4js = require('log4js');log4js.configure(, //
控制台輸出
]});
var logger = log4js.getlogger('normal');
logger.setlevel('info');
...
log4js的輸出級別6個: trace, debug, info, warn, error, fatal
如果輸出級別是info,則不會列印出低於info級別的日誌trace,debug,只列印info,warn,error,fatal。這樣做 的好處在於,在生產環境中我們可能只關心異常和錯誤,並不關心除錯資訊。從而大大減少日誌的輸出,能減少磁碟寫入。而在開發環境中,我們可以需要列印非常 多的資訊,幫助開發人員定位錯誤,除錯**。
還有乙個好處就是,**中可以混有各種的日誌列印**。我們只要在乙個配置檔案中,修改輸出級別,日誌輸出就會發生變化,不用修改所有的**。如果所有地方都是console.log(),那麼上線的時候,改動這個東西就要花很多時間。
增加replaceconsole代替console.log() 增加replaceconsole配置,讓所有console輸出到日誌中,以[info] console代替console預設樣式。
var log4js = require('log4js');log4js.configure(,
],replaceconsole:
true
});
調整日誌輸出的格式
level:log4js.levels.info, format:':method :url'}));
自動調整日誌輸出級別
日誌級別對應規則:設定level為auto:
我們在配置log4js時會有乙個問題。就是以上所有配置資訊都是在express.js中做的,logger也是在這裡直接定義的。如果在控制器(routes)想用log4js進行輸出,我們現在拿不到logger的控制代碼。
新建立log.js
var log4js = require('log4js');log4js.configure(,
//控制台輸出
//日期檔案格式
], replaceconsole:
true, //
替換console.log
levels:
});var datefilelog = log4js.getlogger('datefilelog');
var consolelog = log4js.getlogger('console');
exports.logger =consolelog;
exports.use = function
}
我們把logger單獨定義出來,並且做為api暴露出來,此處是開發除錯,沒有使用檔案輸出。 這樣在其他模組中使用logger輸出日誌只需如下操作:
var logger = require('../../log').logger;logger.debug("collecttime=%s",collecttime);
樣我們就已經玩轉log4js了,如果部署生產需要檔案輸出只要修改log.js中datefilelog級別,然後設定exports.logger=datefilelog即可。
日誌管理 log4js
版本 安裝 npm install log4js封裝 log4js 在專案根目錄下新建檔案logger.js var log4js require log4js log4js.configure replaceconsole true 替換 console.log levels exports.lo...
nodejs日誌管理 log4js使用詳解
注 log4js日誌級別,分別為 權值從小到大 all trace debug info warn error fatal mark off 1.同一檔案,不同 level 日誌輸出 var log4js require log4js log4js.configure 控制台輸出 type date...
Nodejs 使用log4js日誌
一 建立log4.js檔案,儲存日誌到log檔案,並在控制台輸出,如果不控制台輸出,把刪除紅色的 const log4js require log4js path require path log4js.configure trace debug info warn error fatal cate...