我在文件 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
}
任何其他方法来调试此类问题?