dj-koa-log4js

1.1.1 • Public • Published

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 业务的名称

Readme

Keywords

Package Sidebar

Install

npm i dj-koa-log4js

Weekly Downloads

0

Version

1.1.1

License

ISC

Unpacked Size

7.59 kB

Total Files

3

Last publish

Collaborators

  • winniebear