NodeJs之log4js


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##

出錯的地方


一定要注意datafile與dateFile。在windows與linux上的大小寫區分!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM