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")
}