Encapsulate log4js log output in koa2 project

1. Log output to the console

npm i log4js -D

Encapsulate log4js file:

Note: The log4js.getLogger('debug') level must be reacquired each time to take effect.

const log4js = require("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.configure({
    appenders:{
        // 输出日志到控制台
        console: { type: 'console' }
    },
    categories:{
        default: { appenders: ['console'], level: 'debug' },
    }
});

/**
 * 日志输出 level 为 debug
 */
exports.debug = (content) => {
//注意:每次都要重新获取log4js.getLogger('debug')级别才能生效
    let logger = log4js.getLogger('debug')
    logger.level = levels.debug
    logger.debug(content);
  }

exports.info = (content) =>{
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content);
}

exports.warn = (content) =>{
    let logger = log4js.getLogger('warn')
    logger.level = levels.warn
    logger.warn(content);
}

exports.error = (content) =>{
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content);
}

Introduce and use log4js in the app.js file

// 使用封装的log4j日志
const logger = require("./utils/log4js");

// logger
app.use(async (ctx, next) => {
  const start = new Date()
  await next()
  const ms = new Date() - start
  // console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
  // 使用log4j输出日志
  logger.info(`log4j输出日志:读取到log4js日志`);
  logger.info(`log4j输出日志:${ctx.method} ${ctx.url} - ${ms}ms`);
})

 

2. Log output to log file

Modify the configuration to output to a file

const log4js = require("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.configure({
    appenders:{
        // 输出日志到控制台
        console: { type: 'console' },
        // 输出日志到日志文件
        info:{
            type: 'file',
            filename: 'logs/info-logs.log'
        },
        error:{
            type: 'dateFile',
            filename: 'logs/error',
            pattern: 'yyyy-MM-dd.log',
            // 设置文件名称是 filename + pattern
            alwaysIncludePattern: true
        }
    },
    categories:{
        default: { appenders: ['console'], level: 'debug' },
        info: {
            appenders: ["info","console"],
            level: 'info'
        },
        error:{
            appenders: ["error","console"],
            level: 'error'
        }
    }
});

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

exports.info = (content) =>{
    let logger = log4js.getLogger('info')
    logger.level = levels.info
    logger.info(content);
}

exports.warn = (content) =>{
    let logger = log4js.getLogger('warn')
    logger.level = levels.warn
    logger.warn(content);
}

exports.error = (content) =>{
    let logger = log4js.getLogger('error')
    logger.level = levels.error
    logger.error(content);
}

 

Guess you like

Origin blog.csdn.net/qq_34569497/article/details/134711945