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日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go 自动升级依赖版本的几种方法实现

    Go 自动升级依赖版本的几种方法实现

    Go语言使用GoModules进行依赖管理,可以通过多种方式自动升级依赖,本文就来介绍Go 自动升级依赖版本的7种方法,感兴趣的可以了解一下
    2025-03-03
  • Golang学习之map的用法详解

    Golang学习之map的用法详解

    在Golang(又称Go语言)中,map是一种非常有用的数据结构,所以这篇文章小编就来带大家一起深入了解一下map的用法,感兴趣的小伙伴可以了解一下
    2023-06-06
  • 一文带你掌握Golang中的值类型和引用类型

    一文带你掌握Golang中的值类型和引用类型

    在 Golang 中,数据类型可以分为两大类:值类型(Value Types)和引用类型(Reference Types),理解这两种类型的区别对于理解 Golang 中的数据传递和内存管理是很重要的,下面就跟随小编一起深入了解一下它们吧
    2024-01-01
  • go语言中decimal的用法详解

    go语言中decimal的用法详解

    本文主要介绍了go语言中decimal的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 一文带你吃透Golang中net/http标准库服务端

    一文带你吃透Golang中net/http标准库服务端

    这篇文章将从服务端(Server)作为切入点和大家分享一下Go语言net/http标准库的实现逻辑,进而一步步分析http标准库内部是如何运作的,感兴趣的可以了解下
    2024-03-03
  • Go每日一库之dateparse处理时间

    Go每日一库之dateparse处理时间

    不管什么时候,处理时间总是让人头疼的一件事情。今天要介绍的dateparse实现解析日期时间格式的字符串。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Go语言如何实现将[][]byte转为io.Reader

    Go语言如何实现将[][]byte转为io.Reader

    本文主要介绍了如何在Go语言中实现将[][]byte转换为io.Reader,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2025-02-02
  • 详解Go 中的时间处理

    详解Go 中的时间处理

    这篇文章主要介绍了Go 中的时间处理,本文将介绍 time 库中一些重要的函数和方法,希望能帮助到那些一遇到 Go 时间处理问题就需要百度的童鞋,需要的朋友可以参考下
    2022-07-07
  • Go并发编程sync.Cond的具体使用

    Go并发编程sync.Cond的具体使用

    Go 标准库提供 Cond 原语的目的是,为等待 / 通知场景下的并发问题提供支持,本文主要介绍了Go并发编程sync.Cond的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • 利用go语言实现查找二叉树中的最大宽度

    利用go语言实现查找二叉树中的最大宽度

    这篇文章主要介绍了利用go语言实现查找二叉树中的最大宽度,文章围绕主题展开详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05

最新评论