day4-logrus 日志

引言

作为 github 上 golang star 最多的库,logrus值得练习。

项目地址

项目地址: https://github.com/sirupsen/logrus [star:21.4k]

使用场景

  • 日志打印、格式化日志

安装

go get github.com/sirupsen/logrus

常用方法

  • Info 打印 info 级别的日志
  • SetFormatter 设置日志格式
  • SetLevel 设置打印的级别,此级别以上显示
  • SetReportCaller 设置是否将调用方法作为字段包含在打印的日志内。

例子

package main

import "github.com/sirupsen/logrus"

func main() {
	log := logrus.New()
	log.Info("------TextFormatter--------") // 默认格式
	log.SetFormatter(&logrus.TextFormatter{
		TimestampFormat: "2006-01-02 15:04:05", // 定义日期时间格式
		FullTimestamp:   true,
		DisableColors:   true,
	})
	log.Info("oscome info log")
	log.Debug("oscome debug log")

	log.WithFields(logrus.Fields{
		"name": "test",
	}).Infof("to do %v", "log")

	log.Info("------JSONFormatter--------")

	formatter := &logrus.JSONFormatter{
		TimestampFormat: "2006-01-02 15:04:05", // 定义日期时间格式
		DataKey:         "test",                // key
		FieldMap: logrus.FieldMap{
			logrus.FieldKeyTime:  "timestamp",
			logrus.FieldKeyLevel: "level",
			logrus.FieldKeyMsg:   "message",
			logrus.FieldKeyFunc:  "caller",
		},
	}
	log.SetFormatter(formatter)
	log.SetReportCaller(true)      // 打印 log 产生的位置
	log.SetLevel(logrus.InfoLevel) // debug
	logrus.Info("oscome info log")
	log.Debug("oscome debug log")

	log.WithFields(logrus.Fields{
		"name": "test",
	}).Infof("to do %v", "log")
}

实例代码

https://github.com/oscome/godaily/tree/main/day004

tips

  1. 建议全局统一格式,如果需要收集建议设置为 json 格式,方便收集到 ES 等日志系统
  2. 可以配合 file-rotatelogs 或者 shell 去分割

关注和赞赏都是对小欧莫大的支持! 🤝 🤝 🤝
公众号