sentry.CaptureException 返回事件 ID 但日志未进入仪表板

问题描述 投票:0回答:0

我在文件 db/migration/db.go 中有一个 go 程序,其中正在创建到 PostgreSQL 的数据库连接。如果无法建立数据库连接,我想登录哨兵。

代码看起来像

package main

import (
    "database/sql"
    "flag"
    "fmt"

    "project-name/config"
    "github.com/getsentry/sentry-go"
    _ "github.com/golang-migrate/migrate/v4/database/postgres"
    _ "github.com/golang-migrate/migrate/v4/source/file"
)

type SentryError struct {
    LogMessage string
    Err        error
}

func (e SentryError) Error() string {
    return fmt.Sprintf("Error: %s", e.LogMessage)
}

func main() {
    cfg, err := config.Initialize()
    if err != nil {
        logger.Error(err)
        return
    }

    dsn := fmt.Sprintf(
        "host=%s user=%s dbname=%s port=%s password=%s sslmode=disable",
        cfg.Postgres.Host,
        cfg.Postgres.Username,
        cfg.Postgres.Name,
        cfg.Postgres.Port,
        cfg.Postgres.Password,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        logMessage := fmt.Sprintf("failed to establish database connection: %v", err)
        sentryError := &SentryError{
            LogMessage: logMessage,
            Err:        err,
        }
        eventID := sentry.CaptureException(sentryError)
        fmt.Println(eventID) // 4f9270174607428c9e0a5ac85b130309
        panic(err)
    }
}

在终端中执行此文件时,脚本会打印事件 ID,但哨兵仪表板中没有日志。

尝试过的解决方案: 1.尝试通过 URL sentry.io/ORGANISATION_SLUG/PROJECT_SLUG/events/EVENT_ID 搜索事件,但这给了我 PAGE NOT FOUND ERROR,尽管所有参数 ORGANIZATION_SLUG 、 PROJECT_SLUG 和 EVENT_ID 似乎都是正确的。

注意: 我将项目名称作为项目别名传递,因为与组织别名不同,哨兵项目设置中没有类似项目别名的东西。

此外,Sentry 已经在 config.Initialize() 方法中初始化了。

func InitSentry() error {
    sentryDsn := os.Getenv("SENTRY_DSN")
    if err := sentry.Init(sentry.ClientOptions{
        Dsn: sentryDsn,
    }); err != nil {
        return err
    }
    return nil
}
  1. 也尝试在这里简单地调用 sentry.CaptureMessage,但遇到了同样的问题。

任何其他方法来调试此类问题?

go sentry
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.