封装Express 自定义中间件

封装一个日志中间件

  • 记录请求方法(get/post)

  • 记录访问路径

  • 记录响应状态码

  • 记录处理耗时

  • 写入日志文件

    //logger.js
    const fs=require('fs')
    const path=require('path')
    const logFile=path.join(__dirname,'../logs/access.log')
    module.exports=(req,res,next)=>{
    const start=Date.now() //记录请求开始时间
    res.on('finish',()=>{
    const duration=Date.now()-start //计算请求耗时
    const log=[${new Date().toISOString()}]${req.method}${req.originalUrl}${res.statusCode}${duration}ms //拼接的日志内容
    fs.appendFile(logFile,log+'\n',err=>{
    if(err) console.log('写入日志失败:',err) //如果写入失败,输出错误信息
    })
    })
    next() //继续执行下一个中间件
    }

    //app.js
    const express=require('express') //引入express 框架
    const logger=require('./middleware/logger')
    const app=express() //创建应用实例
    const port=3000
    app.use(logger) //使用日志中间件
    app.get('/',(req,res)=>{
    res.send('

    首页

    ')
    })
    app.get('/about',(req,res)=>{
    res.send('

    关于我们页面

    ')
    })
    //启动服务器
    app.listen(port,()=>{
    console.log('服务器')
    })

相关推荐
谢小飞17 小时前
大文件上传很难?学会这招,GB文件秒传不是梦
前端·node.js
Embedded-Xin1 天前
中间件学习-Iceoryx2零基础入门
学习·中间件
Embedded-Xin1 天前
中间件—zenoh零基础入门
linux·中间件·rust·机器人·自动驾驶·嵌入式
周小董1 天前
[1367]npm 安装 canvas 报错 node-gyp ERR
前端·npm·node.js
张龙6872 天前
Node.js 内存泄漏排查实战:从内存曲线到堆快照,一条可复用的定位路径
性能优化·node.js
烂蜻蜓2 天前
Node.js入门教程(七):工作机制
node.js
凌云拓界3 天前
NodeVerdict | .ndv 二进制格式:为 WASM 解码器设计的紧凑布局
安全·架构·开源·node.js·编辑器·软件工程·wasm
凌云拓界3 天前
NodeVerdict | 性能门禁:把追踪数据变成 CI 规则
ci/cd·信息可视化·开源·node.js·bug·数据可视化·安全架构
烂蜻蜓3 天前
Node.js入门教程(五):NVM 管理多版本 Node.js
node.js
接着奏乐接着舞。3 天前
LLM 流式响应:网慢和断线怎么处理?
前端·人工智能·node.js·aigc