支持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:
错误
京城郭少
支持TraceID、错误文件、错误行的第三方golang库:gerror的更多相关文章
- 网上都没有提到的教程:python捕获异常后,怎么输出错误文件和行号
1.假设输出不存在的变量 a try: print(a) except NameError as e: print('发生错误的文件:', e.__traceback__.tb_frame.f_glo ...
- Android如何调用第三方SO库
问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后 ...
- Android如何调用第三方SO库(转)
源:Android如何调用第三方SO库 问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件 ...
- 上传文件到 Sharepoint 的文档库中和下载 Sharepoint 的文档库的文件到客户端
文件操作应用场景: 如果你的.NET项目是运行在SharePoint服务器上的,你可以直接使用SharePoint服务器端对象模型,用SPFileCollection.Add方法 http://msd ...
- MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法
问题描述: 前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易. 也上网查了很长时间,没一个方法能解决我 ...
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...
- 更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误
更新新网卡驱动,修复win7雷凌网卡Ralink RT3290在电脑睡眠时和启动网卡时出现蓝屏netr28x.sys驱动文件错误 我的本本是win7,雷凌网卡Ralink RT3290 802.1 ...
- VS2012 编译程序时报无法载入PDB文件错误解决方式
VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...
- IIS加载JSON文件 错误 404
问题描述 在发布项目的时候,有一些文件是json文件,在网页中进行加载,但是在IIS7发布的时候,json文件居然是404,无法找到,在URL上输入地址也一样. 错误原因 IIS内部机制,不支持直接访 ...
- UnsupportedClassVersionError : 不支持的类版本错误
UnsupportedClassVersionError : 不支持的类版本错误 listenerStart配置类的应用程序侦听器时出错 listenerStart Error configuring ...
随机推荐
- WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等
在应用启动过程里,除了主 UI 线程之外,如果还多启动了新的 UI 线程,且此新的 UI 线程碰到 ContentPresenter 类型,那么将可能存在让新的 UI 线程和主 UI 线程互等.这是多 ...
- Go语言基础(一)
一.Go语言简介 Go即Golang,是Google公司2009年11月正式对外公开的一门语言 Go是静态强类型语言,是区别于解析型语言的编译型语言. 解析型语言--源代码是先翻译为中间代码,然后解析 ...
- aspnetcore插件开发dll热加载
该项目比较简单,只是单纯的把业务的dll模块和controller的dll做了一个动态的添加删除处理,目的就是插件开发.由于该项目过于简单,请勿吐槽.复杂的后续可以通过泛型的实体.dto等做业务和接口 ...
- WEB服务与NGINX(25)- LNMP架构-WEB集群部署phpmyadmin
目录 1 LNMP架构-WEB集群部署phpmyadmin 1.1 WEB集群架构需求分析 1.2 WEB集群架构环境 1.3 部署mariadb 1.4 部署web服务器nginx 1.5 部署re ...
- 第十届山东省大学生程序设计竞赛题解(A、F、M、C)
部分代码define了long long,请记得开long long A. Calandar 把年份.月份.单个的天数全都乘以对应的系数转化成单个的天数即可,注意最后的结果有可能是负数,要转化成正数. ...
- uniAPP Android平台完整更新与热更新
一.概述 1.uni-app打包成apk或wgt文件,使用plus.runtime.getProperty方法获取本地应用资源版本号.2.调用后端接口,拿到与后端规定好的版本号,与前面获取的版本号进行 ...
- VForm
VForm是一款基于Vue 2/Vue 3的低代码表单,支持Element UI.iView两种UI库,定位为前端开发人员提供快速搭建表单.实现表单交互和数据收集的功能. VForm全称为Varian ...
- selenium遇到手机验证码怎么解决
完整代码在: selenium使用案例 解决思路,点击发送送验证码,程序用input方法去和人进行交互,手动输入验证码,按回车键,这样程序就接收到手机验证码了,再把验证码赋值给验证码框,继续往下操作 ...
- orangepi zero2在linux5.4以上内核使用ili9341
背景 根据orangepi zero2用户手册说明,linux5.13内核不能使用 modprobe fbtft_device 驱动spi lcd 查看linux内核源码提交记录,发现在v5.4-rc ...
- k8s 怎么精准获取deployment关联的pods?
标签获取 我们获取那些pods属于某个deployment时最先想到的可能是通过标签获取,其实这个是不准确的.因为标签并不是唯一的,也就是说不同deployment其实是能有相同标签的. replic ...