提问人:Amandeep kaur 提问时间:10/25/2023 最后编辑:Amandeep kaur 更新时间:10/31/2023 访问量:50
main() 中的事件使用 bugsnaggin 的 AutoNotify() 执行两次
Events in main() are executed twice with bugsnaggin's AutoNotify()
问:
我集成了用于报告运行时崩溃的 bugsnag。集成是作为 pr 文档完成的。我有一个init(),在main()之前调用。init() 中有一些事件我需要在 main 之前执行。问题是用 init() 编写的事件使用 AutoNotify() 执行了两次。
环境
- Bugsnag Go 版本:v2
- Bugsnag Go Gin 版本:v1.0.0
- Go 版本:go1.19.5 linux/amd6
- Gin 框架版本:v1.8.1
示例代码片段
package main
import (
"fmt"
bugsnaggin "github.com/bugsnag/bugsnag-go-gin"
"github.com/bugsnag/bugsnag-go/v2"
"github.com/gin-gonic/gin"
)
func init() {
fmt.Println("I am at init()")
}
func main() {
router := gin.Default()
router.Use(gin.Recovery())
router.Use(BugsnagAutoNotify())
}
func BugsnagAutoNotify() gin.HandlerFunc {
return bugsnaggin.AutoNotify(bugsnag.Configuration{
APIKey: config.BugsnagApiKey,
ProjectPackages: []string{"main"},
AppVersion: config.BugsnagAppVersion,
})
}
更新:
即使完全删除 init() 并在 main() 中移动该功能,事件也会执行两次。现在我不确定 Bugsnag 发生了什么。
答: 暂无答案
评论
init
永远不能多次运行,因为不是可以直接调用的已定义符号。如果多次看到输出,那是因为您的进程被多次执行。init
init
用于初始化当前进程的包;有外部副作用的东西不应该从中调用。否则,你将不得不弄清楚 Bugsnag 如何调用子进程,并使用相同的机制跳过任何你想跳过的初始化。init