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程序部署到linux上运行的实现方法

    go程序部署到linux上运行的实现方法

    本文主要介绍了go程序部署到linux上运行的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • go语言开发环境安装及第一个go程序(推荐)

    go语言开发环境安装及第一个go程序(推荐)

    这篇文章主要介绍了go语言开发环境安装及第一个go程序,这篇通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Golang error使用场景介绍

    Golang error使用场景介绍

    我们在使用Golang时,不可避免会遇到异常情况的处理,与Java、Python等语言不同的是,Go中并没有try...catch...这样的语句块,这个时候我们如何才能更好的处理异常呢?本文来教你正确方法
    2023-03-03
  • golang两种调用rpc的方法

    golang两种调用rpc的方法

    这篇文章主要介绍了golang两种调用rpc的方法,结合实例形式分析了Go语言调用rpc的原理与实现方法,需要的朋友可以参考下
    2016-07-07
  • Go语言中节省内存技巧方法示例

    Go语言中节省内存技巧方法示例

    这篇文章主要为大家介绍了Go语言中节省内存技巧方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 浅析Gin框架中路由参数的使用

    浅析Gin框架中路由参数的使用

    这篇文章主要为大家介绍了路由参数的基本语法,以及路由匹配和路由参数值提取等相关内容,以帮助读者更好地对Gin 框架中路由参数进行使用,需要的可以参考下
    2023-08-08
  • 详解go语言的并发

    详解go语言的并发

    这篇文章主要介绍了go语言并发的相关资料,帮助大家更好的理解和学习使用golang,感兴趣的朋友可以了解下
    2021-03-03
  • 详解为什么说Golang中的字符串类型不能修改

    详解为什么说Golang中的字符串类型不能修改

    在接触Go这么语言,可能你经常会听到这样一句话。对于字符串不能修改,可能你很纳闷,日常开发中我们对字符串进行修改也是很正常的,为什么又说Go中的字符串不能进行修改呢?本文就来通过实际案例给大家演示一下
    2023-03-03
  • Go调度器学习之协作与抢占详解

    Go调度器学习之协作与抢占详解

    如果某个G执行时间过长,其他的G如何才能被正常调度,这就引出了接下来的话题:协作与抢占。本文将通过一些示例为大家详细讲讲调度器中协作与抢占的相关知识,需要的可以参考一下
    2023-04-04
  • Golang环境变量设置和查看工具go env详解

    Golang环境变量设置和查看工具go env详解

    go env 是 Go 工具链中的一个命令,用于设置和查看当前 Golang 环境的相关信息,对于理解、编译和运行 Golang 程序非常有用,本文就给大家简单的介绍一下Golang环境变量设置和查看工具go env,需要的朋友可以参考下
    2023-07-07

最新评论