简介
log4js是javascript的log框架,在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。
配置
const log4js = require('log4js');
const path = require('path');
const mkdirp = require('mkdirp');
const fs = require('fs');
const log_level = 'ALL'; //设置日志输出级别
/*
配置日志的输出级别,共 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF 八个级别
*/
function createDir(writePath) {
var exists = fs.existsSync(writePath); //路径存在返回true,不存在返回false
if (!exists) { //没有路径则创建
mkdirp.sync(writePath);
}
}
var logManager = {
logger: {},
init: function(category) {
createDir(path.join(process.cwd(), './logs'));
log4js.configure({
"appenders": [{
"type": "dateFile", //按日期文件输出
"filename": path.join(process.cwd(), './logs/webService'), //日志输出路径
"maxLogSize": 50 * 1024 * 1024, //文件最大存储空间,当文件内容超过文件存储空间会自动生成一个文件test.log.1的序列自增长的文件
"backups": 4, //default value = 5.当文件内容超过文件存储空间时,备份文件的数量
"category": "webService", //日志类型,自定义
"layout": {
"type": "pattern",
"pattern": "[%r] [%p] [%c] %m"//[时间] [日志级别] [category] [日志信息]
},
"alwaysIncludePattern": true,//(默认为false) - 将模式包含在当前日志文件的名称以及备份中
"pattern": "-yyyy-MM-dd.log" //(可选,默认为.yyyy-MM-dd) - 用于确定何时滚动日志的模式。格式:.yyyy-MM-dd-hh:mm:ss.log
}, {
"type": "dateFile",
"filename": path.join(process.cwd(), './logs/imageService'),
"maxLogSize": 50 * 1024 * 1024,
"backups": 4,
"category": "imageService",
"layout": {
"type": "pattern",
"pattern": "[%r] [%p] [%c] %m"//[时间] [日志级别] [category] [日志信息]
},
"alwaysIncludePattern": true,
"pattern": "-yyyy-MM-dd.log"
},{
"type": "console" //只在控制台输出
}]
});
this.logger[category] = log4js.getLogger(category);
this.logger[category].setLevel(log_level);
},
getLogger: function(category) {
if (!this.logger[category]) {
this.init(category);
}
return this.logger[category];
}
}
module.exports = logManager;
使用
const logManager = require('./logger') //上面配置文件的路径
const log = logManager.getLogger('webService') //日志类型
log.info('输出webService类型的日志')
网友评论