dj-koa-log4js
v1.1.1
Published
到家Koajslog4js 中间件模块
Downloads
2
Readme
dj-koa-log4js
基于log4js的日志打印模块封装,封装了KoaJs的打印日志中间件,和基于PM2的实时切换日志级别的方法。
方法列表
- initLog 初始化方法,一定要在入口js的最开始的地方调用
- loggerMid KoaJs的打印日志中间件
- getLogger 非ctx上下文获取日志实例的方法
- toggleLog 基于PM2的实时切换日志级别的方法,在TRACE和初始化logger时配置的logLevel切换
log4js的日志级别
ALL: { value: Number.MIN_VALUE, colour: 'grey' },
TRACE: { value: 5000, colour: 'blue' },
DEBUG: { value: 10000, colour: 'cyan' },
INFO: { value: 20000, colour: 'green' },
WARN: { value: 30000, colour: 'yellow' },
ERROR: { value: 40000, colour: 'red' },
FATAL: { value: 50000, colour: 'magenta' },
MARK: { value: 9007199254740992, colour: 'grey' }, // 2^53
OFF: { value: Number.MAX_VALUE, colour: 'grey' }
日志级别从All->OFF 逐级增加,log4js只会输出大于等于当前日志级别的日志
使用方法
初始化方法
const {initLog, loggerMid, getLogger, toggleLog} = require('dj-koa-log4js')
//参数中logLevel 可以不传,
initLog({
logLevel: 'INFO',// 初始化日志级别
appName: 'xxx', // 业务名字,日志每一条记录会显示业务线名字
funLogHead (ctx) { // 可以自定义在输出日志之前插入的内容,例如traceid,uid等等,返回一个数组
return [ctx.feTraceid || '', head1, head22, ...]
},
funLogTail(ctx) {// 可以自定义在输出日志之后插入的内容,例如'over'等等,返回一个数组
return []
}
})
使用中间件
app.use(loggerMid)
//后面就可以直接使用ctx.logger来打印日志了
ctx.logger.info('日志内容')
最终输出的日志内容为:
2020-06-15 11:21:58.840 [INFO] 业务名称 - logHead1 logHead2 日志内容 logTail1 logTail2 ...
没有ctx上下文时使用
公共方法没有ctx时使用,全局公用一个logger实例
const logger = getLogger()
// 调用方需要把ctx传进来,打印日志时把ctx作为打印日志的第一个参数
logger.info(ctx, '日志内容')
// 如果没有ctx属性,直接打印,这样最终打印的日志里没有定制的日志头和日志尾信息
logger.info('日志内容')
运行时切换日志级别
PM2启动服务时才支持,需要在入口页面添加
// 在入口js中添加
const logger = getLogger()
process.on('SIGUSR2', (msg) => {
// log级别在TRACE和初始化logger时配置的logLevel切换
toggleLog()
})
不启动服务,不修改代码,实时切换日志打印level的方法,实现是toggle的方法,切两次就会恢复默认级别
# 业务名称通过pm2 ls查看
# 切换日志levle为trace级别
pm2 sendSignal SIGUSR2 业务的名称
# 切换日志level为初始级别
pm2 sendSignal SIGUSR2 业务的名称