Skip to content

logrus — Go 语言最好用的日志库之一

logrus 是 Go 语言生态中最流行、最成熟的日志库之一,许多知名的开源项目都使用了这个库,如大名鼎鼎的 docker。 目前(2025.12.5)在 GitHub 中已获得 25.6k Star。

Github 地址:https://github.com/sirupsen/logrus

功能介绍

✅ 结构化日志,让你能输出的不是一个简单的文本而是带字段的内容

✅ 日志等级控制,轻松区分生产环境与开发环境的输出等级

✅ 日志格式化,内置两种日志格式,文本和 JSON,你也可以使用其他格式化插件

✅ 强大的 Hook,可以在日志写入时做任何你想做事,也有很多第三方插件使用

✅ 多实例,你可以创建多个 logger 以达到区分多模块日志输出能力

✅ 输出到多个目标(MultiWriter),你可以将日志同时输出到控制台、文件等

✅ 兼容性,与 Go 标准库日志记录器完全兼容,可平滑迁移到 logrus

安装

shell
go get github.com/sirupsen/logrus

使用

go
package main

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

func main() {
	//设置日志级别,默认是Info级别
	logrus.SetLevel(logrus.TraceLevel)

	//设置日志格式,内置两种日志格式,文本和 JSON,有其他第三方格式化插件
	logrus.SetFormatter(&logrus.JSONFormatter{})

	//设置是否在输出日志中添加当前调用的文件名和所在行信息
	logrus.SetReportCaller(true)

	//设置日志多个输出位置
	//logrus.SetOutput(io.MultiWriter(...))

	//Trace(追踪级) 详细的调试信息,如函数内部的执行流程
	logrus.Trace("trace message")
	//Debug(调试级) 开发、调试和定位问题的关键信息
	logrus.Debug("debug message")
	//Info(信息级) 记录程序的正常运行状态和重要事件,最常用的级别
	logrus.Info("info message")
	//Warn(警告级) 记录潜在的问题或需要注意的情况
	logrus.Warn("warn message")
	//Error(错误级) 记录错误信息,通常是程序运行中某环节出现错误
	logrus.Error("error message")
	//Fatal(致命级) 记录严重错误信息,程序会在记录后退出
	//logrus.Fatal("fatal message")
	//Panic(崩溃级) 记录非常严重的错误信息,程序会在记录日志后触发panic
	//logrus.Panic("panic message")

	//包含字段的日志记录
	logrus.WithField("user", "Alice").Info("User Login")
	//或者是这样
	logrus.WithFields(logrus.Fields{"user": "Bob", "age": "18"}).Warn("User Login")

	//添加钩子函数,可以在日志记录前后执行自定义逻辑
	//有很多好用的官方插件和第三方插件,感兴趣可以去找找,这里不再演示
	//logrus.AddHook(...)

	//自己创建logrus实例
	logger := logrus.New()
	logger.SetFormatter(&logrus.TextFormatter{})
	logger.Info("info message")
}

最后更新于:

如有转载请标注本站原文地址