log4js "log4js" 是一個管理,記錄日誌的工具。 其實與 "morgan" 的作用類似。 安裝 log4js的6個日誌級別 分別是:trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色) 這6個level方便我們給日誌設置不同的 ...
log4js
log4js是一個管理,記錄日誌的工具。
其實與morgan的作用類似。
安裝
npm install -g log4js
log4js的6個日誌級別
分別是:trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色)
這6個level方便我們給日誌設置不同的輸出等級,不同的顏色也方便我們區分。
var log4js = require('log4js');
var logger = log4js.getLogger();
logger.trace('test1')
logger.debug('test2')
logger.info('test3')
logger.warn('test4')
logger.error('test4')
logger.fatal('test4')
日誌的效果如下:
log4js的配置
file類型日誌
當然,我們也可以具體配置log4js。
常用配置有##appenders##,##Levels##.appenders用來配置日誌的具體的展現形式,Levels用來配置日誌的展現等級。
例如:我們配置一個寫入到文件中的日誌。
var log4js = require('log4js');
//var logger = log4js.getLogger();
log4js.configure({
"appenders":[{
"type":"file",
"filename":__dirname+"/logs/logger.log",
"category":"logger"
}]
})
var loggerTest = log4js.getLogger('logger')
loggerTest.info('test')
logger.log文件中:
[2016-12-11 16:32:51.303] [INFO] logger - test
一定要先建立logs文件夾,不然會報錯哦
我們也可以配置多個:
var log4js = require('log4js');
//var logger = log4js.getLogger();
log4js.configure({
"appenders":[{
"type":"file",
"filename":__dirname+"/logs/logger.log",
"category":"logger"
},{
"type":"file",
"filename":__dirname+"/logs/logger2.log",
"category":"logger2"
}]
})
var loggerTest = log4js.getLogger('logger')
var loggerTest2 = log4js.getLogger('logger2')
loggerTest.info('test')
loggerTest2.info('test2')
我們也可以控制輸出的級別,通過在配置文件中添加##levels##
var log4js = require('log4js');
//var logger = log4js.getLogger();
log4js.configure({
"appenders":[{
"type":"file",
"filename":__dirname+"/logs/logger.log",
"category":"logger"
},{
"type":"file",
"filename":__dirname+"/logs/logger2.log",
"category":"logger2"
}],
"levels":{
"logger":"info",
"logger2":"warn"
}
})
var loggerTest = log4js.getLogger('logger')
var loggerTest2 = log4js.getLogger('logger2')
loggerTest.info('test')
loggerTest2.info('test2')
datefilel類型的日誌
上面的日誌輸出的名稱是固定的,這可能不是我們想要的。我們想要每天一個日誌,我們需要修改##type##屬性。
"type":"datefile",
"filename":__dirname+"/logs/logger",
"pattern": "-yyyy-MM-dd-hh.log",
"alwaysIncludePattern": true,
"category":"logger"
這樣輸出的日誌的文件格式類似這種:logger-2016-12-11-18.log
需要配合##pattern##,##alwaysIncludePattern##來使用。
appenders是用來配置日誌輸出源信心的。
pattern:表示一個文件的時間命名格式,只有配合datefile才起作用
filename:表示文件的路徑名稱
type:表示日誌輸出類型
category:可以理解為一類日誌的表示
alwaysIncludePattern:表示日誌是否包含命名格式,只有配合datefile才起作用
backups:表示備份的文件數量,配合file類型
其他具體的內容可以參見:log4js的wiki
結合express
var log4js = require('log4js');
var express = require("express");
var app = express();
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/log4jsconnect.log', category: 'log4jslog' }
]
});
var logger = log4js.getLogger('log4jslog');
app.use(log4js.connectLogger(logger, { level: 'auto' }));
app.get('/', function(req,res) {
res.send('hello world');
});
列印出:
[2016-12-11 18:53:24.463] [INFO] log4jslog - ::1 - - "GET / HTTP/1.1" 200 170 "" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
[2016-12-11 18:53:24.493] [INFO] log4jslog - ::1 - - "GET /stylesheets/style.css HTTP/1.1" 200 111 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
[2016-12-11 18:53:24.599] [ERROR] log4jslog - ::1 - - "GET /favicon.ico HTTP/1.1" 404 1188 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
除了上述的常用的方法,如果想要瞭解很多使用細則的話。可以參看##log4js的example##