继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

stb烙饼
关注TA
已关注
手记 84
粉丝 2
获赞 4

课程名称: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}`)
});

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP