封装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('服务器')
    })

相关推荐
kingx336 分钟前
网络安全事件应急响应:X集团 WebServer 入侵溯源与处置
中间件·web·应急响应·取证·恶意样本
特立独行的猫a16 小时前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
小易老师AI实战18 小时前
用中间件把任务规划嵌进智能体循环
中间件·状态管理·智能体·工具调用·langgraph·任务规划
YIAN1 天前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
用户11977079480731 天前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
donecoding1 天前
pnpm 配好了,为什么执行的还是另一份?命令入口与运行时排查
node.js·前端工程化
江屿风1 天前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
SomeOtherTime1 天前
node.js基础(AI回答)
node.js
绿蕉2 天前
从硬件内卷到“中间件荒“——仿真工具、开发接口、开源生态
中间件·机器人
小易老师AI实战2 天前
LangGraph Agent 任务规划中间件:TodoListMiddleware 原理解析
中间件·agent·langgraph·任务规划·大模型智能体