Golang如何自定义logrus日志保存为日志文件

 更新时间:2024年02月18日 09:36:07   作者:比嗨皮兔  
这篇文章主要给大家介绍了关于Golang如何自定义logrus日志保存为日志文件的相关资料,logrus是目前Github上star数量最多的日志库,logrus功能强大,性能高效,而且具有高度灵活性,提供了自定义插件的功能,很多开源项目都是用了logrus来记录其日志,需要的朋友可以参考下

背景

为了方便查看日志,项目中需要把日志保存到对应的日志文件中,所以需要当前的配置,以使得日志能够保存到对应的日志文件中。

代码

import (
	"github.com/orandin/lumberjackrus"
	"github.com/sirupsen/logrus"
)

func init() {
	logrus.AddHook(NewRotateHook())
}

func NewRotateHook() logrus.Hook {
	hook, _ := lumberjackrus.NewHook(
		&lumberjackrus.LogFile{
			// 通用日志配置
			Filename:   "output.log",
			MaxSize:    100,
			MaxBackups: 1,
			MaxAge:     1,
			Compress:   false,
			LocalTime:  false,
		},
		logrus.InfoLevel,
		&logrus.TextFormatter{DisableColors: true},
		&lumberjackrus.LogFileOpts{
			// 针对不同日志级别的配置
			logrus.TraceLevel: &lumberjackrus.LogFile{
				Filename: "trace.log",
				MaxSize:    100,
				MaxBackups: 1,
				MaxAge:     1,
				Compress:   false,
				LocalTime:  false,
			},
			logrus.DebugLevel: &lumberjackrus.LogFile{
				Filename: "debug.log",
				MaxSize:    100,
				MaxBackups: 1,
				MaxAge:     1,
				Compress:   false,
				LocalTime:  false,
			},
			logrus.InfoLevel: &lumberjackrus.LogFile{
				Filename: "info.log",
				MaxSize:    100,
				MaxBackups: 1,
				MaxAge:     1,
				Compress:   false,
				LocalTime:  false,
			},
			logrus.ErrorLevel: &lumberjackrus.LogFile{
				Filename:   "error.log",
				MaxSize:    10,   
				MaxBackups: 10,    
				MaxAge:     10,    
				Compress:   false,  
				LocalTime:  false, 
			},
			logrus.FatalLevel: &lumberjackrus.LogFile{
				Filename:   "fatal.log",
				MaxSize:    10,   
				MaxBackups: 10,    
				MaxAge:     10,    
				Compress:   false, 
				LocalTime:  false, 
			},
		},
	)
	return hook
}

附:logrus特性

logrus具有以下特性:

  • 完全兼容golang标准库日志模块。logrus拥有六种日志级别:debug、info、warn、error、fatal和panic,这是golang标准库日志模块的API的超集。如果你的项目使用标准库日志模块,完全可以用最低的代价迁移到logrus上。
  • 可扩展的Hook机制。允许使用者通过hook方式,将日志分发到任意地方,如本地文件系统、标准输出、logstash、elasticsearch或者mq等,或者通过hook定义日志内容和格式等。
  • 可选的日志输出格式。logrus内置了两种日志格式,JSONFormatter和TextFormatter。如果这两个格式不满足需求,可以自己动手实现接口Formatter,来定义自己的日志格式。
  • Field机制。logrus鼓励通过Field机制进行精细化、结构化的日志记录,而不是通过冗长的消息来记录日志。
  • logrus是一个可插拔的、结构化的日志框架。

总结 

到此这篇关于Golang如何自定义logrus日志保存为日志文件的文章就介绍到这了,更多相关Golang自定义logrus日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang爬虫colly 发送post请求

    golang爬虫colly 发送post请求

    本文主要介绍了golang爬虫colly 发送post请求实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 解决goland 导入项目后import里的包报红问题

    解决goland 导入项目后import里的包报红问题

    这篇文章主要介绍了解决goland 导入项目后import里的包报红问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • go格式“占位符”输入输出 类似python的input

    go格式“占位符”输入输出 类似python的input

    这篇文章主要介绍了go格式“占位符”, 输入输出,类似python的input,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • golang文件服务器的两种方式(可以访问任何目录)

    golang文件服务器的两种方式(可以访问任何目录)

    这篇文章主要介绍了golang文件服务器的两种方式,可以访问任何目录,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • golang Gorm与数据库完整性约束详解

    golang Gorm与数据库完整性约束详解

    这篇文章主要介绍了golang Gorm与数据库完整性约束详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Gin 接收前端传参几种方式小结

    Gin 接收前端传参几种方式小结

    本文主要介绍了Gin 接收前端传参几种方式小结,包括路径参数、查询字符串、表单数据、JSON数据和文件上传,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • Go语言无缓冲的通道的使用

    Go语言无缓冲的通道的使用

    Go语言中无缓冲的通道是指在接收前没有能力保存任何值的通道,本文主要介绍了Go语言无缓冲的通道的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Golang Makefile示例深入讲解使用

    Golang Makefile示例深入讲解使用

    一次偶然的机会,在 github 上看到有人用 Makefile,就尝试了一下,发现真的非常合适,Makefile 本身就是用来描述依赖的,可读性非常好,而且与强大的 shell 结合在一起,基本可以实现任何想要的功能
    2023-01-01
  • Go来合并两个csv的实现示例

    Go来合并两个csv的实现示例

    本文主要介绍了Go来合并两个csv的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Go语言bufio库的全面指南与实战技巧详解

    Go语言bufio库的全面指南与实战技巧详解

    这篇文章主要为大家全面介绍一下 bufio 库的核心组件与功能,包括 Reader、Writer 和 Scanner 等并深入探讨它们在实际编程中的运用场景和技巧,感兴趣的可以了解下
    2024-01-01

最新评论