浅谈如何使用Nodejs创建访问日志记录的中间件

本篇文章给大家分享一下使用node.js实现接口访问日志记录功能,希望对大家有所帮助!

浅谈如何使用Nodejs创建访问日志记录的中间件

中间件-访问日志

目标

利用中间件技术,写一个用来记录访问日志的中间件

中间件

middleware, 中间件一个特殊的url地址处理函数,它被当作 app.use(中间件函数) 的参数或者是某个路由处理函数中使用。

中间件是 express 的最大特色,也是最重要的一个设计。Express是一个自身功能极简,完全是路由和中间件构成一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。【推荐学习:《nodejs 教程》】一个 express 应用,就是由许许多多的中间件来完成的。

1.png

中间件的基本使用

// 具名函数格式:const handler1 = (req, res, next) => {  console.log(Date.now());  next();}app.use(handler1);
// 匿名函数格式:app.use((req, res, next) => {  console.log(Date.now());  next();});

说明:中间件函数中有三个基本参数, req、res、nextreq 就是请求相关的对象,它和下一个中间件函数中的req对象是一个对象res 就是响应相关的对象,它和下一个中间件函数中的res对象是一个对象next 它是一个函数,调用它将会跳出当前的中间件函数,执行后续中间件;如果不调用next,也不执行res.end,则整个请求都会在当前中间件卡住。

思路

如知AI笔记 如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27 查看详情 如知AI笔记 应用中间件技术,将每条请求都记录下来建立一个.json的文件用来存储记录将数据读取后放入 .json文件

js实现代码

const express = require("express");const app = express();const fs = require("fs");// 获取ip的函数function getClientIp(req) {  return (    req.headers["x-forwarded-for"] ||    req.connection.remoteAddress ||    req.socket.remoteAddress ||    req.connection.socket.remoteAddress  );}// 中间件app.use((req, res, next) => {  console.log("时间", new Date());  console.log("访问地址", req.url);  console.log("f访问ip", getClientIp(req));  /**   * 建立一个.json的文件 []   * 获取文件内容'[]'==>[]   * let obj = {time:xxx,url:xxx,ip:xxx}   * [].push(obj)   * [].push(obj)覆盖写入.json的文件   */  fs.readFile("hhhh.json", "utf8", (err, data) => {    if (err) {      console.log("文件读取错误", err);      return;    }    let arr = JSON.parse(data);    //console.log(arr);    let obj = {};    obj.time = new Date();    obj.url = req.url;    obj.ip = getClientIp(req);    arr.push(obj);    console.log(arr);    let newArr = JSON.stringify(arr);    fs.writeFile("hhhh.json", newArr, (err) => {      if (err) {        console.log("写入错误", err);      }    });  });  next();});// 监听接口app.listen(8080, () => {  console.log("成功,接口是8080");});

控制台截图

2.png

原文地址:https://juejin.cn/post/7008510822578126862

作者:不怂

更多编程相关知识,请访问:编程视频!!

以上就是浅谈如何使用Nodejs创建访问日志记录的中间件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/561099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
挽救失足AI,不能光靠打骂
上一篇 2025年11月10日 01:02:30
永劫无间携手 NVIDIA ACE,开启 AI 队友新时代
下一篇 2025年11月10日 01:02:33

相关推荐

  • Workerman怎么处理业务逻辑?Workerman中间件使用方法?

    Workerman通过事件回调处理业务逻辑,中间件则用于优雅地拦截和处理请求。在请求处理流程中,中间件按注册顺序依次执行,形成处理链条,每个中间件可对请求进行验证、记录日志或拦截,例如权限验证未通过时直接返回401响应,阻止后续执行。中间件通过请求对象传递数据,如在前置中间件中注入用户信息,后续中间…

    2026年9月11日
    100
  • VSCode远程开发容器化部署方案

    VSCode通过Remote – Containers扩展实现容器化开发,1. 需安装Docker、VSCode及对应扩展;2. 项目根目录配置.devcontainer文件夹,含devcontainer.json和Dockerfile;3. 自定义镜像安装依赖确保环境一致;4. 支持团…

    2026年9月10日
    300
  • vscode jshint 插件安装报错

    在安装vscode的jshint插件时,如果遇到右下角提示报错信息如下: Failed to load jshint library.Please install jshint in your workspace folder using’npm install jshint&#8217…

    2026年9月6日
    100
  • ThinkPHP6中间件使用指南:实现全局过滤与验证

    ThinkPHP6中间件使用指南:实现全局过滤与验证 引言:在Web应用开发中,中间件是一种非常重要和常用的技术手段。ThinkPHP6作为一款主流的PHP开发框架,提供了强大的中间件功能。中间件可以在请求和响应之间进行处理,实现全局过滤和验证的功能,有助于提高应用程序的安全性和稳定性。 一、什么是…

    2026年9月3日
    500
  • 如何在Laravel中使用中间件进行缓存处理

    如何在Laravel中使用中间件进行缓存处理 引言:Laravel是一个非常流行的PHP开发框架,它提供了丰富的功能和工具,使得开发者可以快速构建高性能的Web应用程序。其中一个非常重要的功能就是中间件。中间件可以用来处理请求和响应,并且可以在这个过程中进行一些自定义的操作,比如缓存处理。在本文中,…

    2026年9月2日
    000
  • 如何在Laravel中使用中间件进行缓存优化

    如何在Laravel中使用中间件进行缓存优化 缓存是一种优化技术,可以显著提高应用程序的性能和响应速度。在Laravel框架中,我们可以使用中间件来实现缓存的优化。本文将详细介绍如何在Laravel中使用中间件进行缓存优化,并提供具体的代码示例。 安装和配置中间件首先,我们需要安装Laravel的缓…

    2026年9月2日
    100
  • 如何在Laravel中使用中间件进行错误处理

    如何在Laravel中使用中间件进行错误处理 引言:Laravel是一个流行的PHP框架,具有强大的错误处理系统。其中,中间件是Laravel的核心功能之一,它可以通过在请求进入路由处理之前或之后执行一系列的逻辑,从而对错误进行处理。本文将详细介绍如何在Laravel中使用中间件进行错误处理,并提供…

    2026年9月2日
    000
  • 如何在Laravel中使用中间件处理表单验证

    如何在Laravel中使用中间件处理表单验证,需要具体代码示例 引言:在 Laravel 中,表单验证是非常常见的任务。为了确保用户输入的数据的有效性和安全性,我们通常会对表单提交的数据进行验证。Laravel 提供了一个方便的表单验证功能,同时也支持使用中间件来处理表单验证。本文将详细介绍如何在 …

    2026年9月2日
    100
  • 如何在Laravel中使用中间件进行微信支付集成

    如何在Laravel中使用中间件进行微信支付集成 引言:微信支付是一种非常常见和便捷的支付方式,对于很多需要在线支付服务的项目来说,集成微信支付是必不可少的一步。在Laravel框架中,可以通过使用中间件来实现微信支付集成,以便更好地管理请求流程和处理支付逻辑。本文将介绍如何在Laravel中使用中…

    2026年9月2日
    000
  • 使用minio搭建私有化对象存储服务

    使用minio搭建私有化对象存储服务使用minio搭建私有化对象存储服务使用minio搭建私有化对象存储服务使用minio搭建私有化对象存储服务

    在工作中,我们常常会接触到对象存储服务,但这些服务大多是云服务。对于需要对外开放的项目而言,这类服务是可行的。然而,当我们需要私有化部署时,如何继续使用对象存储呢? 这里介绍一个开源项目MinIO,使用它,我们可以轻松搭建属于自己的私有云服务。 MinIO是一个非常轻量级的服务,可以简单地与其他应用…

    2026年8月31日 用户投稿
    200
  • 如何在CentOS和RHEL上安装最新的Nodejs

    node.js是一个基于chrome javascript运行时的平台,可轻松构建快速,可扩展的网络应用程序。最新版本node.js yum存储库由其官方网站维护。使用本篇文章添加yum存储库,并使用简单命令将最新nodejs安装到centos / rhel 7/6系统。 要安装特定的nodejs版…

    2026年8月31日
    000
  • 前端项目依赖安装失败提示找不到Python:如何解决node-gyp问题?

    前端项目依赖安装:node-gyp找不到Python的解决方案 前端项目依赖安装过程中,常常会遇到node-gyp找不到合适的Python版本的问题,导致安装失败。本文针对以下错误信息提供解决方案: gyp err! find pythongyp err! find python *********…

    2026年8月30日
    500
  • choco 安装 和 mkcert 本地https

    原文链接:https://blog.spiritling.cn/posts/4cb12659/ Choco命令行安装 直接拷贝执行即可,注意需要管理员身份运行 cmd 安装: 代码语言:javascript代码运行次数:0运行复制 @”%SystemRoot%System32WindowsPower…

    2026年8月27日
    100
  • VSCode怎么用NodeJS联想_VSCode配置Node.js智能提示与自动补全功能教程

    VSCode在Node.js项目中实现智能提示的核心是通过jsconfig.json或tsconfig.json配置文件,结合@types类型定义和语言服务解析代码结构。正确设置module、target、baseUrl、paths等选项,并安装对应@types包,可显著提升代码联想准确性;对于无类…

    2026年8月27日
    200
  • 随便记录下系列 – node->express

    系列记录 – node.js到express的一站式指南 一、在Windows上安装Node.js环境:从官方网站下载Node.js,需替换下载链接 https://nodejs.org/dist/v6.2.0/node-v6.2.0-x64.msi 中的版本号6.2.0为所需版本即可。…

    2026年8月25日
    700
  • 配置 Tailwind CSS:初始化指南 |设置 Tailwind CSS:初始化指南

    简介 |简介意大利语:本文有意大利语和英语版本。向下滚动查看英文版本。英语:本文有意大利语和英语版本。向下滚动查看英文版本。 意大利语版 如何开始使用 tailwind css:项目完整指南 简介 在项目中配置 tailwind css 第一次似乎令人畏惧,特别是对于像我这样第一次尝试这个库的人来说…

    2025年12月24日
    000
  • 如何设置独立 CLI:在 Shopify 中使用 Tailwind CSS,而不使用 Nodejs

    依赖关系 Shopify CLI:一种命令行界面工具,可帮助您开发和管理 Shopify 主题。TailwindCSS:实用程序优先的 CSS 框架,用于快速构建自定义设计。 设置 我们使用 Tailwind 作为独立的 CLI 工具。更多信息可以参考官方指南。 注意:如果您在配备 Intel 处理…

    2025年12月24日
    100
  • 谷歌怎么下载html5_HTML5无需下载浏览器直接渲染运行页面文件【说明】

    HTML5不是需下载的软件,而是浏览器原生标准;Chrome默认支持,可通过file://协议直接打开本地.html文件,或用http-server启动本地服务器以支持完整API功能。 如果您已编写好HTML5页面文件,但误以为需要“下载HTML5”才能运行,则需明确:HTML5不是可下载的独立软件…

    2025年12月23日
    100
  • 手机编程html5工具_移动端代码编辑器推荐【指南】

    推荐五款移动端HTML5编辑器:Acode Editor支持一键预览;DroidEdit Pro可FTP/SFTP远程编辑;Codeanywhere提供云端IDE与Git集成;SpckEditor专注极简单页开发;Termux组合方案实现命令行本地服务。 如果您希望在手机上直接编写、调试和预览 HT…

    2025年12月23日
    200
  • Linux polybar状态栏,HTML+CSS加载进度实时!

    可通过 Bash 脚本在 Polybar 中模拟 HTML+CSS 风格进度条,利用 %{F#color} 标记和块字符 ▮ 动态显示已完成与未完成部分,结合实时任务进度输出格式化文本。 如果您希望在 Linux 的 Polybar 状态栏中显示一个基于 HTML+CSS 风格的加载进度条,并实时反…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信