Go第三方日志库logrus
1|0Go第三方日志库logrus
- 日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发。本文介绍了
logrus
这个日志库的基本使用。
2|0一、logrus介绍
-
Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。
-
它有以下特点:
-
完全兼容标准日志库,拥有七种日志级别:
Trace
,Debug
,Info
,Warning
,Error
,Fatal
andPanic
。 -
可扩展的Hook机制,允许使用者通过Hook的方式将日志分发到任意地方,如本地文件系统,logstash,elasticsearch或者mq等,或者通过Hook定义日志内容和格式等
-
可选的日志输出格式,内置了两种日志格式JSONFormater和TextFormatter,还可以自定义日志格式
-
Field机制,通过Filed机制进行结构化的日志记录
-
线程安全
-
3|0二、安装
4|0三、基本示例
- 使用Logrus最简单的方法是简单的包级导出日志程序:
5|0四、进阶示例
- 对于更高级的用法,例如在同一应用程序记录到多个位置,你还可以创建logrus Logger的实例:
6|0五、日志级别
- Logrus有七个日志级别:
Trace
,Debug
,Info
,Warning
,Error
,Fatal
andPanic
。
7|0六、设置日志级别
- 你可以在Logger上设置日志记录级别,然后它只会记录具有该级别或以上级别任何内容的条目:
- 如果你的程序支持debug或环境变量模式,设置
log.Level = logrus.DebugLevel
会很有帮助。
8|0七、字段
-
Logrus鼓励通过日志字段进行谨慎的结构化日志记录,而不是冗长的、不可解析的错误消息。
-
例如,区别于使用
log.Fatalf("Failed to send event %s to topic %s with key %d")
,你应该使用如下方式记录更容易发现的内容:
WithFields
的调用是可选的。
9|0八、默认字段
-
通常,将一些字段始终附加到应用程序的全部或部分的日志语句中会很有帮助。例如,你可能希望始终在请求的上下文中记录
request_id
和user_ip
。 -
区别于在每一行日志中写上
log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})
,你可以向下面的示例代码一样创建一个logrus.Entry
去传递这些字段。
10|0九、日志条目
-
除了使用
WithField
或WithFields
添加的字段外,一些字段会自动添加到所有日志记录事中:-
time:记录日志时的时间戳
-
msg:记录的日志信息
-
level:记录的日志级别
-
11|0十、Hooks
-
你可以添加日志级别的钩子(Hook)。例如,向异常跟踪服务发送
Error
、Fatal
和Panic
、信息到StatsD或同时将日志发送到多个位置,例如syslog。 -
Logrus配有内置钩子。在
init
中添加这些内置钩子或你自定义的钩子:
- 注意:Syslog钩子还支持连接到本地syslog(例如. “/dev/log” or “/var/run/syslog” or “/var/run/log”)。有关详细信息,请查看syslog hook README。
12|0十一、格式化
- logrus内置以下两种日志格式化程序:
- 还支持一些第三方的格式化程序,详见项目首页。
13|0十二、记录函数名
- 如果你希望将调用的函数名添加为字段,请通过以下方式设置:
- 这会将调用者添加为”method”,如下所示:
__EOF__

本文链接:https://www.cnblogs.com/Mcoming/p/18080307.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人