当前位置: 首页 > news >正文

简单记录下gin中使用中间件记录操作日志

  • 1、直接定义中间件
    package middlewareimport ("bytes""encoding/json""fmt""github.com/gin-gonic/gin""go.uber.org/zap""io""strconv""strings"
    )func LoggerMiddleWare() gin.HandlerFunc {return func(ctx *gin.Context) {//请求方式method := ctx.Request.Method//请求路由reqUrlList := strings.Split(ctx.Request.URL.String(), "?")//状态码statusCode := ctx.Writer.Status()//请求ipclientIP := ctx.ClientIP() // 获取请求体数据var data map[string]interface{}body, err := io.ReadAll(ctx.Request.Body)// 等于拷贝一份往下传递,否则下接口的方法中拿不到请求体数据ctx.Request.Body = io.NopCloser(bytes.NewBuffer(body))if err != nil {fmt.Println(err, "????")}err = json.Unmarshal(body, &data)// 记录到数据库中,排除登录接口if reqUrlList[0] != "/api/v1/admin/login" {message := ""if method == "GET" {if len(reqUrlList) == 2 && reqUrlList[1] != "" {message = reqUrlList[1]}} else {if utils.MapToJson(data) != "null" {message = utils.MapToJson(data)}}// TODO 插入到数据库中}// 打印日志//loggerMap := map[string]interface{} {//	"status_code":statusCode,//	"client_ip": clientIP,//	"req_method":method,//	"req_uri": reqUrl,//}//marshal, _ := json.Marshal(loggerMap)loggerStr := fmt.Sprintf("status_code:%s,client_ip:%s,req_method:%s,req_uri:%s", strconv.Itoa(statusCode), clientIP, method, reqUrlList[0])global.Logger.Info("中间件本次请求", zap.String("http", loggerStr))ctx.Next()}
    }
  • 2、在需要使用的地方直接使用就可以,自动会收集日志到数据库中

相关文章:

简单记录下gin中使用中间件记录操作日志

1、直接定义中间件package middlewareimport ("bytes""encoding/json""fmt""github.com/gin-gonic/gin""go.uber.org/zap""io""strconv""strings" )func LoggerMiddleWare() gin.HandlerFunc…...

基于Matlab利用IRM和RRTstar实现无人机路径规划(附上源码+数据+说明+报告+PPT)

无人机路径规划是无人机应用领域中的关键问题之一。本文提出了一种基于IRM(Informed RRTstar Method)和RRTstar(Rapidly-exploring Random Tree star)算法的无人机路径规划方法,并使用Matlab进行实现。该方法通过结合I…...

uniapp使用@microsoft/signalr(报错“ReferenceError: require is not defined“)

后台老哥要用微软的signalr&#xff0c;总结了一些经验和问题 引入方法 1、npm npm i microsoft/signalr 2、下载他的js或者cdn <script src"https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/6.0.1/signalr.js"></script>在uniapp中&…...

CloudCompare 二次开发(9)——半径滤波

目录 一、概述二、代码集成三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 使用CloudCompare与PCL的混合编程实现点云半径滤波。半径滤波的算法原理见:PCL 半径滤波器。基于PCL将半径滤波集成到Cl…...

ElementUI浅尝辄止29:Breadcrumb 面包屑

显示当前页面的路径&#xff0c;快速返回之前的任意页面。 1.如何使用&#xff1f; 在el-breadcrumb中使用el-breadcrumb-item标签表示从首页开始的每一级。Element 提供了一个separator属性&#xff0c;在el-breadcrumb标签中设置它来决定分隔符&#xff0c;它只能是字符串&am…...

ABB MPRC086444-005数字输入模块

ABB MPRC086444-005 是一款数字输入模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;用于接收和处理数字信号。以下是这种类型的数字输入模块通常可能具备的一般功能和特点&#xff1a; 数字输入接口&#xff1a;MPRC086444-005 模块通常配备多个数字输入通道&…...

stable diffusion实践操作-常见lora模型介绍

系列文章目录 本文专门开一节写Lora相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 文章目录 系列文章目录前言一、什么是lora?1.1 lora 定义1.2 lora的基本原理1.2 通过分层控制lora 二、作用&#xff1a;2.1 复刻人物特征2…...

kubeadm 安装k8s

目录 安装k8s 环境准备 所有节点&#xff0c;关闭防火墙规则&#xff0c;关闭selinux&#xff0c;关闭swap交换&#xff08;必须关闭swap分区&#xff09; //修改主机名 //所有节点修改hosts文件 //调整内核参数 所有节点安装docker 所有节点安装kubeadm&#xff0c;kube…...

选择最适合您的Bug管理软件:市场比较与推荐

“Bug管理软件哪家好&#xff1f;市场上有许多优秀的Bug管理系统品牌如&#xff1a;Zoho Projects、JIRA、Redmine、Bugzilla、MantisBT。” 一款高效的Bug管理系统可以帮助团队更有效地发现、记录和解决软件中的问题&#xff0c;从而提高产品质量和用户满意度。本文将为您介绍…...

Spring MVC的常用注解及用法

Spring MVC的执行流程&#xff1a; 1.用户的请求首先到Controller 2.Controller将请求转发给Model 3.Model处理业务并将数据结果给Controller 4.Controller会将数据给View引擎 5.View转换数据生成最终的页面给用户。 常用注解&#xff1a; 1.requestMapping&#xff1a;…...

HTTP和HTTPS的区别、 HTTPS运行原理

HTTP 一种用于web浏览器和web服务器基于数据传递的协议基于TCP/IP协议的应用层传送&#xff0c;用于客户端和服务器之间的数据交互 HTTPS 是HTTP的安全版&#xff0c;基于SSL或TLS协议&#xff0c;对客户端和服务器之间加密和身份验证&#xff0c;使得数据之间传递具有了安全…...

统计封闭岛屿的数目

1254. 统计封闭岛屿的数目 关于岛屿的相似题目&#xff1a; 岛屿数量 – 二维矩阵的dfs算法封闭岛屿数量 – 二维矩阵的dfs算法统计封闭岛屿的数目统计子岛屿不同岛屿的数量 class MaxAreaOfIsland:"""floodFill 算法1254. 统计封闭岛屿的数目https://leetcod…...

【数据结构与算法系列4】长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&…...

问道管理:底部渐渐抬高 今年反弹时刻或已来临

快速探底后&#xff0c;两市呈现分解走势。 沪指周三低开震动&#xff0c;指数在20日均线取得支撑后小幅上升&#xff0c;最终以红盘报收。深成指走势弱于沪指&#xff0c;尽管午后指数有所上升&#xff0c;但最终未能翻红。到收盘&#xff0c;沪指报收3158.08点&#xff0c;上…...

正规黄金代理的三大要素

对于现货黄金投资来说&#xff0c;寻找一个正规的黄金代理是十分重要的问题。在目前的现货黄金投资市场中&#xff0c;现货黄金代理的数量很多&#xff0c;他们都致力于耕耘现货黄金投资市场。当越来越多的专业人士加入到现货黄金投资的市场中当中时&#xff0c;这个市场将会越…...

Spine2D骨骼动画播放器 - 微信小程序版

Spine2D骨骼动画播放器 - 微信小程序版 简介平台支持 界面预览使用说明演示视频 版本笨笨的小目标&#xff08;废话&#xff09;参考资料测试文件百度盘分享 相关文档 简介 本播放器是SpinePlayer的微信小程序版。由于官方并没有提供现成的运行库&#xff0c;只能自己改造。 设…...

蓝天转债,双良转债上市价格预测

蓝天转债111017 基本信息 转债名称&#xff1a;蓝天转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;8.7亿元。 正股名称&#xff1a;蓝天燃气&#xff0c;今日收盘价&#xff1a;9.74元&#xff0c;转股价格&#xff1a;10.13元。 当前转股价值 转债面值…...

python-爬虫-xpath方法-批量爬取王者皮肤图片

import requests from lxml import etree获取NBA成员信息 # 发送的地址 url https://nba.hupu.com/stats/players # UA 伪装 google header {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.3…...

go锁--读写锁

每个锁分为读锁和写锁&#xff0c;写锁互斥 没有加写锁时&#xff0c;多个协程都可以加读锁 加了写锁时&#xff0c;无法加读锁&#xff0c;读协程排队等待 加了读锁&#xff0c;写锁排队等待 Mutex用来写协程之间互斥等待 读协程使用readerSem等待写锁的释放 写协程使用writer…...

Unity中Shader的屏幕坐标

文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言 Unity中Shader的屏幕坐标 一、屏幕坐标 1、屏幕像素的坐…...

惠普M232,M233,M234,M235,M236屏幕报错rd,修复工具

惠普M232,M233,M234,M235,M236屏幕报错rd,修复工具&#xff0c;惠普降级固件 链接:https://pan.baidu.com/s/1J7PN4m4fbIzku9DqBFg_nw?pwd0000 提取码:0000 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 备用下载&#xff1a;下载...

如何快速掌握mruby生态系统:第三方库、工具和资源的完整指南

如何快速掌握mruby生态系统&#xff1a;第三方库、工具和资源的完整指南 【免费下载链接】mruby Lightweight Ruby 项目地址: https://gitcode.com/gh_mirrors/mr/mruby mruby是一个轻量级的Ruby实现&#xff0c;专为嵌入式系统和资源受限环境设计。这个强大的轻量级Rub…...

百度网盘提取码智能获取工具:提升资源获取效率的技术方案

百度网盘提取码智能获取工具&#xff1a;提升资源获取效率的技术方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字资源爆炸的今天&#xff0c;百度网盘作为主流文件分享平台&#xff0c;已成为学习资料、工作文件和媒…...

高效管理Git仓库:彻底排除node_modules的实用指南

1. 为什么必须排除node_modules文件夹 每次新建Node.js项目时&#xff0c;npm或yarn都会自动生成node_modules目录来存放依赖包。这个文件夹通常包含成千上万个文件&#xff0c;比如一个基础Vue项目就可能超过200MB。我曾见过一个企业级项目的node_modules膨胀到1.2GB&#xff…...

【Python原生AOT编译落地白皮书】:2026生产环境已验证的5大避坑清单与性能跃迁实测数据

第一章&#xff1a;Python原生AOT编译落地的生产意义与演进全景 Python长期以来以解释执行和动态特性见长&#xff0c;但其运行时开销、启动延迟与内存 footprint 在云原生微服务、边缘设备及严苛SLA场景中日益成为瓶颈。原生AOT&#xff08;Ahead-of-Time&#xff09;编译正从…...

智慧树自动学习助手:三分钟实现高效网课学习的完整指南

智慧树自动学习助手&#xff1a;三分钟实现高效网课学习的完整指南 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台冗长的网课视频而烦恼吗&#xff1…...

Phi-3-mini-4k-instruct-gguf免配置环境:开箱即用的Web UI,开发者5分钟上手

Phi-3-mini-4k-instruct-gguf免配置环境&#xff1a;开箱即用的Web UI&#xff0c;开发者5分钟上手 1. 认识Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创…...

ROS小车导航总是一顿一顿的?试试用yocs_smoother_velocity给速度上个‘柔顺剂’

ROS导航卡顿难题&#xff1a;用yocs_smoother_velocity实现丝滑运动控制 当你看着辛苦搭建的ROS导航机器人像醉汉一样踉踉跄跄地移动&#xff0c;急停急转让人心惊肉跳时&#xff0c;是否怀疑过人生&#xff1f;这背后往往不是路径规划算法的问题&#xff0c;而是速度指令的&qu…...

Qwen3-14B WebUI定制教程:更换主题、添加历史记录、导出对话功能

Qwen3-14B WebUI定制教程&#xff1a;更换主题、添加历史记录、导出对话功能 1. 准备工作与环境检查 在开始定制Qwen3-14B的WebUI之前&#xff0c;我们需要确保环境已经正确配置并运行。以下是准备工作步骤&#xff1a; 1.1 确认镜像版本与硬件配置 首先检查您的环境是否符…...

终极指南:DXVK如何彻底改变Linux游戏体验的5大关键优势

终极指南&#xff1a;DXVK如何彻底改变Linux游戏体验的5大关键优势 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 在Linux上畅玩Windows独占3D游戏曾经是天方夜谭&…...