🆙
Goa 更新情報 v3.8.4 / Clue v0.10.0
概要
Goa / Clue の更新情報メモです。
Goa v3.8.4 / Clue v0.10.0
- 差分:
更新内容
Goa v3.8.4
(#3127)
Fix use of custom packages in error typesカスタムエラーに Meta("struct:pkg:path", "common")
のようなパッケージパスの設定をしたときに、指定したパスにエラーの構造体が生成されてなかった不具合が修正されました。
// CustomError is the custom API error response
var CustomError = Type("CustomError", func() {
Meta("struct:pkg:path", "common") // ← こんなの
ErrorName("code", String, "Code of the error", func() {
Example("not_found")
})
Required("code", "message")
})
(#3134)
Display field name in validation error messagesgRPC のバリデーションのエラーメッセージで常に "message"
となっていた項目が、ちゃんとフィールド名に置き換わるように修正されました。
Clue v0.10.0
(#122)
Add AWS logger adapterClue では、ログを ctx に埋め込んでおいて、それを取り出して、文脈に依存してログを出力します。たとえば、エラーが起きたときだけ、それまでのログを出力する、といったことが context を利用して実行できます。
ctx からログを取り出すときに、取りだしたログがインターフェースを満たすようにアダプターが用意されています。たとえば StdLogger
が用意されていて、これは logrus の StdLogger
インターフェースを満たすように作られています。
type StdLogger interface {
Print(...interface{})
Printf(string, ...interface{})
Println(...interface{})
Fatal(...interface{})
Fatalf(string, ...interface{})
Fatalln(...interface{})
Panic(...interface{})
Panicf(string, ...interface{})
Panicln(...interface{})
}
この形式でログを取り出したいときには、
logger := log.AsStdLogger(ctx)
としてやればいいです。
今回、AWS のロガーに互換なロガー(AWSLogger) が追加されました。
import "github.com/aws/aws-sdk-go-v2/config"
import "goa.design/clue/log"
import "goa.design/clue/trace"
ctx := log.Context(context.Background())
tracedClient := &http.Client{Transport: trace.Client(ctx, http.DefaultTransport)}
cfg, err := config.LoadDefaultConfig(ctx,
config.WithHTTPClient(tracedClient),
config.WithLogger(log.AsAWSLogger(ctx)))
こんな感じで取り出してすぐに AWS の設定で利用できるので便利ですね。という機能追加です。
以上、Goa への細かな修正と、Clue の気の利いた小さな機能追加でした。
Happy hacking!
Discussion