封装log4js

功能:根据不同级别的错误信息例如:debug、info、error,将其输出到控制台或是存储到日志文件中。

实现:
对log4js进行追加器和追加器种类的配置,通过函数的形式将其导出并调用

/**
 * @description: 日志存储
 */
const log4js = require('log4js')

// log4js 常量
const levels = {
  'trace': log4js.levels.TRACE,
  'debug': log4js.levels.DEBUG,
  'info': log4js.levels.INFO,
  'warn': log4js.levels.WARN,
  'error': log4js.levels.ERROR,
  'fatal': log4js.levels.FATAL,
}

// log4js 配置
log4js.configure({
  // 定义追加器
  appenders: {
    // 输出到控制台
    console: { type: 'console' },
    // 输出到文件
    info: { type: 'file', filename: 'logs/all-logs.log' },
    // 文件名按天存储
    error: {
      type: 'dateFile',
      filename: 'logs/log',
      pattern: 'yyyy-MM-dd.log',
      // 指定当前日志文件名的形式为 filename + pattern
      alwaysIncludePattern: true
    }
  },
  // 定义追加器输出种类
  categories: {
    // 默认的 getLogger
    default: { appenders: ['console'], level: 'debug' },
    info: {
      appenders: ['info', 'console'],
      level: 'info'
    },
    error: {
      appenders: ['error', 'console'],
      level: 'error'
    }
  }
})

// 日志输出 级别 debug
exports.debug = (content) => {
  let logger = log4js.getLogger('debug');
  logger.level = levels.debug;
  logger.debug(content)
}

// 日志输出 级别 error
exports.error = (content) => {
  let logger = log4js.getLogger('error');
  logger.level = levels.error;
  logger.error(content)
}

// 日志输出 级别 info
exports.info = (content) => {
  let logger = log4js.getLogger('info');
  logger.level = levels.info;
  logger.info(content)
}

使用:

// 引入封装的 log4js
const log4js = require('./utils/log4js.js')

// logger
app.use(async (ctx, next) => {
  await next()
  // 输出 info 级别的错误日志
  log4js.info('log output')
})

// error-handling
app.on('error', (err, ctx) => {
  // 输出 error 级别的错误日志
  log4js.error(`${err.stack}`)
});

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐