支持TraceID、错误文件、错误行的第三方golang库:gerror

Gerr库简介

Golang第三方库
官方仓库:https://github.com/GuoFlight/gerror

特点:

  • 兼容golang原生error库
  • gerror会自动生成traceID,方便排查整条链路的错误。
  • gerror会自动获取错误发生的文件名+函数名+行号,方便问题的定位。

安装

go get github.com/GuoFlight/gerror

Demo

详见官方Demo:https://github.com/GuoFlight/gerror/tree/main/example

package main

import (
	"errors"
	"fmt"
	"github.com/GuoFlight/gerror"
	"log"
)

func PrintLog(err *gerror.Gerr) *gerror.Gerr {
	log.Println(err.Error())
	return err
}
func DoSomething() *gerror.Gerr {
	err := errors.New("错误") //模拟错误
	if err != nil {
		return gerror.NewErr(err.Error())
	}
	return nil
}
func main() {
	//示例1
	fmt.Println("示例1:")
	err1 := gerror.NewErr("错误1")
	if err1 != nil {
		fmt.Println(err1.TraceID)
		fmt.Println(err1.ErrFile)
		fmt.Println(err1.ErrFunc)
		fmt.Println(err1.ErrLine)
		fmt.Println(err1.Error())
	}
	fmt.Println()

	//示例2
	fmt.Println("示例2:")
	err2 := gerror.NewErr("错误2", err1.TraceID)
	fmt.Println(err2.TraceID)
	fmt.Println()

	//示例3
	fmt.Println("示例3:")
	err3 := PrintLog(gerror.NewErr("错误3", err2.TraceID))
	fmt.Println(err3)
	fmt.Println()

	//示例4
	fmt.Println("示例4:")
	err4 := DoSomething()
	fmt.Println(err4)
}

输出:

示例1:
801c0f4d-70ed-434b-a455-3cdae86d4f32
/Users/guofei/Desktop/Workspace/github/gerror/example/main.go
main.main
24
错误1

示例2:
801c0f4d-70ed-434b-a455-3cdae86d4f32

示例3:
2022/05/21 01:21:57 错误3
错误3

示例4:
错误





京城郭少

posted @ 2022-04-01 22:42  NetRookieX  阅读(45)  评论(0编辑  收藏  举报