有没有办法将哨兵消息输出到控制台

时间:2020-06-04 16:10:16

标签: go sentry

我正在研究用golang编写的一套微服务。我将在两个月内进行演示,并在明年之前将这些服务投入生产。现在,我只讨论所有基础知识和样板,包括对哨兵的呼叫。

所有服务都发出多个异步请求,这些请求使多个进程处于运行状态。如果一件事情失败了,我不想恐慌或返回。我想继续执行,但是我希望能够回头看看发生了什么。

在开发过程中,我真的不希望将任何内容发送给Sentry,但是我想查看输出给Sentry的内容,因此我可以确保所有消息,面包屑,堆栈跟踪等均按预期捕获。这样有可能吗?我尝试运行本地服务器,但是它很server肿,它启动了大约20个Docker容器并消耗了大量内存。只是在寻找轻巧的东西,这样我就可以知道发生了什么。

1 个答案:

答案 0 :(得分:1)

我想出了一个解决方案-输出非常冗长,但这正是我一直在寻找的东西。我只是提供了自己的传输实现,并将其传递给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
}