Open2

[Go] エラーライブラリにsamber/oopsを使ってみる

FlowingSPDGFlowingSPDG

エラーコードの指定や、ビルダーの作成が可能
Xrayやエンドポイント情報をスマートに埋め込めていい感じ。

ただ、ちょっと複雑になるのでエラービルディング専用にpackageを切った方がスマートな気がする

func d() error {
    return oops.
        Code("iam_missing_permission").
        In("authz").
        Tags("authz").
        Time(time.Now()).
        With("user_id", 1234).
        With("permission", "post.create").
        Hint("Runbook: https://doc.acme.org/doc/abcd.md").
        User("user-123", "firstname", "john", "lastname", "doe").
        Errorf("permission denied")
}