node 日誌管理log4js

2021-09-06 19:35:31 字數 3648 閱讀 7020

我們使用express框架時,開發模式用node或者supervisor啟動nodejs應用時,控制台都是顯示如下的日誌。

get /css/bootstrap.min.css 3041ms

get /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 / 30419ms

get /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...