koa2中按照时间划分保存日志信息的实现

该文介绍了如何在Koa项目中安装和配置koa-logger、koa-morgan和rotating-file-stream等中间件,实现接口请求信息的记录和日志文件按时间划分。通过koa-bodyparser解析请求体,然后使用自定义中间件保存请求信息,并利用koa-morgan将请求信息写入日志文件,确保请求头和请求体参数被正确记录。
摘要由CSDN通过智能技术生成
  1. 安装依赖koa-logger,koa-morgan, rotating-file-stream,koa-logger中间件可以实现接口请求信息的记录,koa-morgan中间件把需要保存的请求信息保存到日志文件中,rotating-file-stream可以实现日志信息按照时间划分,moment 用于记录当前时间
npm install koa-logger koa-morgan rotating-file-stream moment --save
  1. 在koa项目入口文件中引入这些依赖并使用
const Koa = require('koa')
const userParser = require('koa-bodyparser')
const errorHandler = require('./error-handle')
const useRoutes = require('../router')

const logger = require('koa-logger');
const morgan = require('koa-morgan');
const moment = require('moment');
const rfs = require('rotating-file-stream');

const app = new Koa()

//处理请求参数
app.use(userParser())

// 创建日志文件
const accessLogStream = rfs.createStream(() => {
  const format = moment().format('YYYY-MM-DD');
  return `access-${format}.log`;
}, {
  interval: '1d', // 按天拆分
  path: './logs'
});

// 使用koa-logger中间件记录请求日志
app.use(logger());

// 定义body变量用于保存请求体参数
let body
app.use( async (ctx,next)=>{
  body = ctx.request.body
  await next()
})

// 使用koa-morgan中间件把需要保存的请求信息保存到日志文件中
app.use(morgan((tokens, req, res) => {
  return [
    moment().format('YYYY-MM-DD HH:mm:ss'), // 添加日期时间
    tokens.method(req, res),
    tokens.url(req, res),
    tokens.status(req, res),
    tokens['response-time'](req, res)+'ms',
    JSON.stringify(req.headers), // 请求头参数
    JSON.stringify(body)// 请求体参数
  ].join('----');
}, { stream: accessLogStream }));


// 前端打包项目保存路径
app.use(require('koa-static')(__dirname + '/public/dist'))
// 路由挂载
useRoutes(app)
// 错误处理
app.on('error', errorHandler)
module.exports  = app
  1. 注意事项

    请求体数据试了好多种办法在koa-morgan中都拿不到,于是我koa-morgan之前新增了一个中间件来获取请求体数据,这里koa-bodyparser需要在koa-morgan之前使用,用来确保请求体被解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值