今天新開一個項目,把原來的log4js 1.x 升級到2.x版本后發現原來的log4js配置不再能使用,查了下官方文檔,順便也記錄下 log4js 2.x的配置。
安裝
項目安裝:
npm install log4js --save
配置
新建一個 log4js.json文件,并添加如下json內容:
{
"appenders": {
"console": {
"type": "console"
},
"trace": {
"type": "dateFile",
"filename": "./logs/access-",
"pattern": ".yyyy-MM-dd.log",
"alwaysIncludePattern": true,
"maxLogSize ": 31457280
},
"http": {
"type": "logLevelFilter",
"appender": "trace",
"level": "trace",
"maxLevel": "trace"
},
"info": {
"type": "dateFile",
"filename": "./logs/info-",
"encoding": "utf-8",
"pattern": ".yyyy-MM-dd.log",
"maxLogSize": 10000000,
"alwaysIncludePattern": true,
"layout": {
"type": "pattern",
"pattern": "[%d{ISO8601}][%5p %z %c] %m"
},
"compress": true
},
"maxInfo": {
"type": "logLevelFilter",
"appender": "info",
"level": "debug",
"maxLevel": "error"
},
"error": {
"type": "dateFile",
"filename": "./logs/error-",
"pattern": ".yyyy-MM-dd.log",
"maxLogSize": 10000000,
"encoding": "utf-8",
"alwaysIncludePattern": true,
"layout": {
"type": "pattern",
"pattern": "[%d{ISO8601}][%5p %z %c] %m"
},
"compress": true
},
"minError": {
"type": "logLevelFilter",
"appender": "error",
"level": "error"
}
},
"categories": {
"default": {
"appenders": [
"console",
"http",
"maxInfo",
"minError"
],
"level": "all"
}
}
}
解釋:
"type": "dateFile" // 可以設置成 console、file、dateFile三種
"filename": "./logs/access-", // 設置log輸出的文件路勁和文件名
"pattern": ".yyyy-MM-dd.log",
"alwaysIncludePattern": true, // 和上面同時使用 設置每天生成log名
"encoding": "utf-8", // 設置文件編碼格式
"maxLogSize ": 31457280 // 設置文件大小
"level": "debug", // 設置log輸出的最低級別
"maxLevel": "error" // 設置log輸出的最高級別
// log級別為8級 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF。默認級別是 OFF
使用
修改app.js 再頂部引入:
var log4js = require('log4js');
log4js.configure('config/log4js.json');
這樣程序哪里需要用就可以直接使用例如:
var logger = require('log4js').getLogger("index");
logger.info("this is info");
logger.warn("this is warn");
logger.debug("this is debug");
logger.error("this is error");
log4js 整合到express
其實只需要修改程序app.js里面的默認使用logger模塊便可
// app.use(logger('dev')); // 這句注釋,添加下句
app.use(log4js.connectLogger(log4js.getLogger("http"), { level: 'trace' }));