手动搭建koa+ts项目框架(日志篇)

前言

本文基于手动搭建koa+ts项目框架(路由篇)新增日志记录


一、安装koa-logger

npm i -S koa-onerror
and 
npm i -S koa-logger
and 
npm i -D @types/koa-logger

二、引入koa-logger并使用

./src/index.ts文件引入

import Koa from "koa";

import logger from 'koa-logger'

import index from "./routes/index"
import users from "./routes/user"

const app = module.exports = new Koa();

// 中间件
app.use(logger())

// 日志记录
app.use(async (ctx, next) => {
    const start = new Date()
    await next()
    const ms = Number(new Date()) - Number(start)
    console.log(ctx.query)
    console.log(ctx.body)
    console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})

// 接口路由
app.use(index.routes())
app.use(users.routes())

if (!module.parent) app.listen(3000);

执行npm run dev开启服务,使用postman查看相关接口
如图,打印了调用的接口项目信息(可以根据项目需要,记录相关日志到数据库啦)

在这里插入图片描述

在这里插入图片描述

三、使用koa-log4开启服务log

npm i -S koa-log4
  • src/utils/logger.ts
const path = require('path');
const log4js = require('koa-log4');
const RUNTIME_PATH = path.resolve(__dirname, '../');
const LOG_PATH = path.join(RUNTIME_PATH, 'log');

log4js.configure({
  // 日志的输出
  appenders: {
    access: {
      type: 'dateFile',
      pattern: '-yyyy-MM-dd.log', //生成文件的规则
      alwaysIncludePattern: true, // 文件名始终以日期区分
      encoding: 'utf-8',
      filename: path.join(LOG_PATH, 'access.log') //生成文件名
    },
    application: {
      type: 'dateFile',
      pattern: '-yyyy-MM-dd.log',
      alwaysIncludePattern: true,
      encoding: 'utf-8',
      filename: path.join(LOG_PATH, 'application.log')
    },
    out: {
      type: 'console'
    }
  },
  categories: {
    default: { appenders: [ 'out' ], level: 'info' },
    access: { appenders: [ 'access' ], level: 'info' },
    application: { appenders: [ 'application' ], level: 'all'}
  }
});

// getLogger 传参指定的是类型
export const logger = log4js.getLogger('application');
export const accessLogger = () => log4js.koaLogger(log4js.getLogger('access')); // 记录所有访问级别的日志
  • src/index.ts
import Koa from "koa";
import index from "./routes/index"
import users from "./routes/usr"

import { accessLogger } from './utils/logger';


const app = module.exports = new Koa();

// 中间件
app.use(logger())
app.use(accessLogger())


// 接口路由
app.use(index.routes())
app.use(users.routes())

if (!module.parent) app.listen(3000);

  • 开启服务后,调用接口就会写入日志文件
    在这里插入图片描述

总结

根据koa-logger依赖,可记录实际用户访问的接口记录~

如有启发,可点赞收藏哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值