首页 > 解决方案 > 有没有办法将哨兵消息输出到控制台

问题描述

我正在开发一套用 golang 编写的微服务。几个月后我会有一个演示,到明年这些服务应该会投入生产。现在,我只是在讨论所有基础知识和样板,包括对哨兵的呼叫。

所有服务都会发出几个异步请求,这些请求会启动多个进程。如果一件事失败了,我不想惊慌或返回;我想继续执行,但我希望能够回去看看发生了什么。

在开发过程中,我真的不想向 Sentry 发送任何东西,但我想看看 Sentry 的输出是什么,这样我就可以确保消息、面包屑、堆栈跟踪等都按预期被捕获。这样的事情可能吗?我尝试运行本地服务器,但它非常臃肿,它启动了大约 20 个 docker 容器并消耗了大量内存。只是在寻找一些轻量级的东西,这样我就可以看到发生了什么。

标签: gosentry

解决方案


我想出了一个解决方案——输出非常冗长,但这正是我正在寻找的(目前)。我只是提供了自己的传输实现并将其传递给 ClientOptions:

type consoleTransport struct{}

func (t *consoleTransport) Configure(options sentry.ClientOptions) {
    zap.L().Info("Sentry client initialized with an empty DSN. Using consoleTransport. No events will be delivered.")
}

func (t *consoleTransport) SendEvent(event *sentry.Event) {
    b, _ := json.Marshal(event)
    fmt.Println("[SENTRY CONSOLE] " + string(b))
}

func (t *consoleTransport) Flush(_ time.Duration) bool {
    return true
}

推荐阅读