koa2搭配log4js实现日志监控

安装node环境

因为此框架是基于node.js的,安装node是必须的进行的第一步,这里不再详细介绍

  • 当前环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jx4AsQfx-1627774072750)(https://mmbiz.qpic.cn/mmbiz_png/Bibnfj0bjiaRsJ7ib7RiaCzibuIibzEEibibNRuEic0upHPsTEfvKacC7PaibXpgXSYB77WjH4w0UgS8IsYibFpGia1tZc71Pw/640?wx_fmt=png)]

安装koa(我们使用淘宝镜像进行安装)

# 全局安装koa脚手架
cnpm install koa-generator -g

# 创建新项目
koa2 my_server

# 打开新建的项目
cd my_server

# 安装依赖
yarn

安装完成后,执行npm dev,浏览器输入localhost:3000,展示如下页面,即koa2环境搭建成功

  • 控制台

  • 浏览器

入口文件在 bin/www 里面

安装logjs插件

npm的log4js文档地址

 安装log4js

npm install log4js
# 或者
yarn add log4js

配置log4js

创建一个utils文件夹,创建log4j.js

注释都在代码上面,有啥问题欢迎骚扰我

/**
 * 日志存储
 * @auther 何小玍。
 * @time 2021/07/28 22:11
 */
const log4j = require('log4js')
const levels = {
    'trace'     : log4j.levels.TRACE,
    'debug'     : log4j.levels.DEBUG,
    'info'      : log4j.levels.INFO,
    'warn'      : log4j.levels.WARN,
    'error'     : log4j.levels.ERROR,
    'fatal'     : log4j.levels.FATAL
}

// log4j配置
log4j.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为bug
 * @param { string } content
 */
exports.debug = ( content ) => {
    let logger = log4j.getLogger('debug')
    logger.level = levels.debug
    logger.debug(content)
}

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

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

定义util.js文件,做通用工具函数库

/**
 * 通用函数封装
 * @auther 何小玍。
 * @time 2021/07/28 22:07
 */
const log4j = require('./log4j')
const CODE = {
    SUCCESS: 200,               // 成功
    PARAM_ERROR: 10001,         // 参数错误
    USER_ACCOUNT_ERROR: 20001,  // 账号或密码错误
    USER_LOGIN_ERROR: 30001,    // 用户未登录
    BUSINESS_ERROR: 40001,      // 业务请求失败
    AUTH_ERROR: 50001,          // 认证失败或TOKEN过期
}

module.exports = {
    /**
     * 分页结构封装
     * @param { number } pageNum        每页数量
     * @param { number } pageSize       当前页码
     */
    pager({ pageNum = 1, pageSize = 1 }) {
        pageNum *= 1
        pageSize *= 1
        const skipIndex = (pageNum - 1) * pageSize      // 当前所翻页数
        return {
            page: {
                pageNum,
                pageSize
            },
            skipIndex
        }
    },

    // 成功回调
    success(data = '', msg = '', code = CODE.SUCCESS) {
        log4j.debug(data)
        return { code, data, msg }
    },

    // 失败回调
    fail(data = '', msg = '', code = CODE>BUSINESS_ERROR) {
        log4j.debug(msg)
        return { code, data, msg }
    },

    // 把状态码暴露全局
    CODE
}

至此,log4j的封装已完成,就可以直接调用了

在app.js里面加入两句话,实时打印get请求和post请求

// logger  中间件
app.use(async (ctx, next) => {
  log4j.info(`get: ${ JSON.stringify(ctx.request.query) }`)         // 监听get请求
  log4j.info(`params: ${ JSON.stringify(ctx.request.body) }`)       // 监听post请求
  const start = new Date()
  await next()
  const ms = new Date() - start
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})

然后运行npm dev, 在浏览器打开localhost:3000,就能看到项目自动生成一个log文件夹,里面有着日志信息

最后最后:

公众号:小何成长,佛系更文,都是自己曾经踩过的坑或者是学到的东西

有兴趣的小伙伴欢迎关注我哦,我是:何小玍。 大家一起进步鸭

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值