手记

【学习打卡】第2天 封装 log4js 日志模块

课程名称:Vue3+ElementPlus+Koa2 全栈开发后台系统

课程章节: 第3章 Koa架构设计

主讲老师:河畔一角

课程内容:

今天学习的内容包括:封装 log4js 日志模块。

课程收获:

什么是日志:

日志用来记录程序的运行信息。开发服务端程序,必须集成日志管理的功能,一旦系统出现故障可以及时排查问题所在。

Koa.js 官方的日志插件是 koa-logger,功能比较简单,只能打印一些请求的信息,不能满足真实场景的需求。所以课程使用 Log4js作为日志插件。

Log4js 是一个优秀的日志插件,常用的功能包括按级别输出不同的日志信息,保存日志为文件等。

使用 log4js:

安装:

npm install log4js

配置:

新建 log4js 的配置文件, utils/log4js.js:

/**
 * log4js 配置文件
 */
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/all-logs.log'
        },
        error:{
            type: 'dateFile',
            filename:'logs/log',
            pattern:'yyyy-MM-dd.log',
            alwaysIncludePattern:true// 设置文件名称为 filename + pattern
        }
    },
    categories:{
        default:{ appenders: [ 'console' ], level: 'debug' },
        info:{
            appenders: [ 'info','console' ],
            level: 'info'
        },
        error:{
            appenders: [ 'error','console' ],
            level: 'error'
        }
    }
})

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

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

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

在应用中使用 log4js 插件:

const log4js = require('./utils/log4js')

// logger
app.use(async (ctx, next) => {
  log4js.info(`${ctx.method} ${ctx.url}`)
  await next()
})

// error-handling
app.on('error', (err, ctx) => {
  log4js.error(`${err.stack}`)
});

0人推荐
随时随地看视频
慕课网APP