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

gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件

结合 Logrus 和 Lumberjack,可以创建一个高效的日志中间件,用于记录请求和响应。以下是实现步骤:

1. 安装依赖

首先,确保安装了 Logrus 和 Lumberjack:

go get github.com/sirupsen/logrus
go get gopkg.in/natefinch/lumberjack.v2
2. 创建日志中间件

创建一个日志中间件,使用 Logrus 记录请求信息,并使用 Lumberjack 实现日志轮转:

package mainimport ("github.com/gin-gonic/gin""github.com/sirupsen/logrus""gopkg.in/natefinch/lumberjack.v2""net/http"
)func SetupLogger() *logrus.Logger {logger := logrus.New()logger.SetOutput(&lumberjack.Logger{Filename:   "log/gin.log",MaxSize:    10, // MBMaxBackups: 3,MaxAge:     28, // daysCompress:   true,})logger.SetFormatter(&logrus.TextFormatter{FullTimestamp: true,})return logger
}func LoggerMiddleware(logger *logrus.Logger) gin.HandlerFunc {return func(c *gin.Context) {logger.WithFields(logrus.Fields{"method": c.Request.Method,"path":   c.Request.URL.Path,}).Info("Request received")c.Next() // 继续处理请求logger.WithFields(logrus.Fields{"status": c.Writer.Status(),"method": c.Request.Method,"path":   c.Request.URL.Path,}).Info("Response sent")}
}
3. 使用中间件

在主函数中注册日志中间件:

func main() {r := gin.Default()logger := SetupLogger()r.Use(LoggerMiddleware(logger))r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong"})})r.Run(":8080")
}

以下是汇总后的完整代码,包括使用 Logrus 和 Lumberjack 创建日志中间件的实现:

package mainimport ("github.com/gin-gonic/gin""github.com/sirupsen/logrus""gopkg.in/natefinch/lumberjack.v2""net/http"
)// 设置 Logger
func SetupLogger() *logrus.Logger {logger := logrus.New()logger.SetOutput(&lumberjack.Logger{Filename:   "log/gin.log",MaxSize:    10, // MBMaxBackups: 3,MaxAge:     28, // daysCompress:   true,})logger.SetFormatter(&logrus.TextFormatter{FullTimestamp: true,})return logger
}// 日志中间件
func LoggerMiddleware(logger *logrus.Logger) gin.HandlerFunc {return func(c *gin.Context) {logger.WithFields(logrus.Fields{"method": c.Request.Method,"path":   c.Request.URL.Path,}).Info("Request received")c.Next() // 继续处理请求logger.WithFields(logrus.Fields{"status": c.Writer.Status(),"method": c.Request.Method,"path":   c.Request.URL.Path,}).Info("Response sent")}
}func main() {r := gin.Default()logger := SetupLogger()r.Use(LoggerMiddleware(logger))r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong"})})r.Run(":8080")
}

代码说明

  1. SetupLogger:配置 Logrus 使用 Lumberjack 进行日志轮转。
  2. LoggerMiddleware:记录请求的 HTTP 方法和路径,以及响应状态。
  3. main:创建 Gin 引擎,注册日志中间件,并设置一个简单的 /ping 路由。在这里插入图片描述

在运行代码之前,请确保创建一个名为 log 的文件夹,以便日志文件能够正确保存。运行后,您将在 log/gin.log 中找到日志记录。

总结

上述代码展示了如何结合 Logrus 和 Lumberjack 创建一个日志中间件,记录请求和响应信息,并实现日志文件的轮转管理。这种方式使得日志管理更加高效和灵活。

http://www.lryc.cn/news/467389.html

相关文章:

  • kube-prometheus-stack 自定义 alertmanager 配置推送webhook
  • openssl签名报错
  • 如何在不使用 VPN 的情况下通过 SOCKS 隧道安全地路由 Web 流量
  • android openGL ES详解——缓冲区VBO/VAO/EBO/FBO
  • 计算机网络——传输层服务
  • gin入门教程(8):渲染与静态文件
  • Fast Simulation of Mass-Spring Systems in Rust 论文阅读
  • javaWeb项目-ssm+vue志愿者招募网站功能说明介绍
  • Selenium + Titanium代理获取请求的接口数据
  • ELK Stack与Graylog:强大的日志分析和可视化工具
  • 安全见闻(6)——开阔眼界,不做井底之蛙
  • GRU神经网络理解
  • Windows 10、Office 2016/2019 和 PPTP 和 L2TP协议即将退役,企业应尽早做好准备
  • 论文阅读:Guided Linear Upsampling
  • 深度图和RGB图对齐
  • 滑动窗口与TCP的缓冲区(buff)的关系
  • 一款好用的搜索软件——everthing(搜索比文件资源管理器快)
  • C#WPF的App.xaml启动第一个窗体的3种方式
  • 【JAVA毕设】基于JAVA的酒店管理系统
  • 聚类--机器学习西瓜书阅读笔记(六)
  • OpenHarmony(1)开发环境搭建
  • Triton服务在ASR语音识别系统中的实现
  • Typora一款极简Markdown文档编辑、阅读器,实时预览,所见即所得,多主题,免费生成序列号!
  • python机器人编程——用python调用API控制wifi小车的实例程序
  • 面试学习整理-线程池
  • Debian会取代CentOS成为更主流的操作系统吗?
  • 网络安全领域推荐证书介绍及备考指南
  • SpringBoot项目ES6.8升级ES7.4.0
  • 深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务
  • MFC工控项目实例二十六创建数据库