今天新开一个项目,把原来的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
使用
修改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' }));