当前位置: 首页 > news >正文

Logrus入门

Logrus入门

1. 下载

go get github.com/sirupsen/logrus

2. logrus常用方法

logrus.Debugln("Debugln")
logrus.Infoln("Infoln")
logrus.Warnln("Warnln")
logrus.Errorln("Errorln")
logrus.Println("Println")// 输出如下
time="2022-12-17T14:02:01+08:00" level=info msg=Infoln   
time="2022-12-17T14:02:01+08:00" level=warning msg=Warnln
time="2022-12-17T14:02:01+08:00" level=error msg=Errorln 
time="2022-12-17T14:02:01+08:00" level=info msg=Println

debug的没有输出,是因为logrus默认的日志输出等级是 info

fmt.Println(logrus.GetLevel())  // info

日志等级

PanicLevel  // 会抛一个异常
FatalLevel  // 打印日志之后就会退出
ErrorLevel
WarnLevel
InfoLevel
DebugLevel
TraceLevel  // 低级别

3. 更改日志级别

如果你想显示Debug的日志,那么你可以更改日志显示等级

logrus.SetLevel(logrus.DebugLevel)

日志级别一般是和系统环境挂钩,例如开发环境,肯定就要显示debug信息,测试环境也是需要的

线上环境就不需要这些日志,可能只显示warnning的日志

4. 设置特定字段

log1 := logrus.WithField("project", "study")
log1.Errorln("hello")
// time="2022-12-17T15:02:28+08:00" level=error msg=hello project=study
log2 := logrus.WithFields(logrus.Fields{"func": "main",
})
log2.Warningf("你好")
// time="2022-12-17T15:02:28+08:00" level=warning msg="你好" func=main
log3 := log2.WithFields(logrus.Fields{"auth": "枫枫",
})
// time="2022-12-17T15:02:28+08:00" level=warning msg="你好" auth="枫枫" func=main
log3.Warnln("你好")

通常,在一个应用中、或者应用的一部分中,都有一些固定的Field。

比如在处理用户http请求时,上下文中,所有的日志都会有request_id和user_ip

为了避免每次记录日志都要使用log.WithFields(log.Fields{“request_id”: request_id, “user_ip”: user_ip}),我们可以创建一个logrus.Entry实例,为这个实例设置默认Fields,在上下文中使用这个logrus.Entry实例记录日志即可。

5. 显示样式 Text和Json

默认的是以text的形式展示,也可以设置为json

logrus.SetFormatter(&logrus.JSONFormatter{})
log1 := logrus.WithField("project", "study")
log1.Errorln("hello")
// {"level":"error","msg":"hello","project":"study","time":"2022-12-17T15:08:24+08:00"}

6. 自定义颜色

如果我们想要在控制中显示颜色,一般的做法都是使用

ANSI 控制码,用于设置文本颜色。\033 是控制码的开始,是八进制数字,[31m 表示将文本设置为红色。

ANSI 控制码是用于在终端和控制台中控制文本格式和颜色的一种标准。它们通常用于在命令行界面 (CLI) 程序中输出彩色文本或者在文本模式下的图形界面 (GUI) 中输出文本。

func main() {// 前景色fmt.Println("\033[30m 黑色 \033[0m")fmt.Println("\033[31m 红色 \033[0m")fmt.Println("\033[32m 绿色 \033[0m")fmt.Println("\033[33m 黄色 \033[0m")fmt.Println("\033[34m 蓝色 \033[0m")fmt.Println("\033[35m 紫色 \033[0m")fmt.Println("\033[36m 青色 \033[0m")fmt.Println("\033[37m 灰色 \033[0m")// 背景色fmt.Println("\033[40m 黑色 \033[0m")fmt.Println("\033[41m 红色 \033[0m")fmt.Println("\033[42m 绿色 \033[0m")fmt.Println("\033[43m 黄色 \033[0m")fmt.Println("\033[44m 蓝色 \033[0m")fmt.Println("\033[45m 紫色 \033[0m")fmt.Println("\033[46m 青色 \033[0m")fmt.Println("\033[47m 灰色 \033[0m")
}

也可以这样写

fmt.Printf("\x1b[0;%dm%s\x1b[0m", 31, "你好")

logrus也是支持颜色输出的

我们需要在配置中去进行开启

logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})

不过,只开启这个的话,输出会怪怪的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有其他的一些配置

ForceColors:是否强制使用颜色输出。
DisableColors:是否禁用颜色输出。
ForceQuote:是否强制引用所有值。
DisableQuote:是否禁用引用所有值。
DisableTimestamp:是否禁用时间戳记录。
FullTimestamp:是否在连接到 TTY 时输出完整的时间戳。
TimestampFormat:用于输出完整时间戳的时间戳格式。
logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true, TimestampFormat: "2006-01-02 15:04:05", FullTimestamp: true})

http://www.mrgr.cn/news/69213.html

相关文章:

  • IDEA2024:右下角显示内存
  • git如何开启SSH?
  • RTSP播放器EasyPlayer.js播放器UniApp或者内嵌其他App里面webview需要截图下载
  • 力扣 LeetCode 225. 用队列实现栈(Day5:栈与队列)
  • 【星海随笔】ZooKeeper-Mesos
  • python os.path.dirname(path) 详解
  • More Effective C++:基础议题
  • 鸿蒙系统崛起:机遇、挑战与未来展望
  • 【Pikachu】File Inclusion文件包含实战
  • SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0
  • 最全面的Flutter(dart)中future使用教程和异步原理
  • 硬件---3电容---电容特性、上电和断电延时、稳压功能、容抗计算
  • 【数据集】【YOLO】【目标检测】树木倒塌识别数据集 9957 张,YOLO道路树木断裂识别算法实战训练教程!
  • Springboot中的单元测试该如何进行?
  • 【前端】Svelte:响应性声明
  • CODESYS V3.5工程信息查看器
  • 【数学二】线性代数-向量-正交规范化、正交矩阵
  • 羲和数据集收集器0.9
  • 探索App Intents:让你的应用与Siri无缝互动的新方式
  • 【linux系统】Linux系统调优的方法与技巧
  • 派对鹦鹉—Party Parrot
  • 【Windows】CMD命令学习——快捷键
  • 鸿蒙next版开发:ArkTS组件鼠标事件详解
  • 书生实战营第四期-基础岛第四关-InternLM + LlamaIndex RAG 实践
  • 【单片机程序】详解IO输入输出方向设置寄存器写法程序来自定义更换引脚与迁移参考程序到工程的流程
  • Google SERP API 对接说明