Kratos 異常恢復(fù)

2022-04-25 09:53 更新

異?;謴?fù)

Recovery 中間件用于異?;謴?fù),服務(wù)出現(xiàn)異常的情況下,防止程序直接退出。

配置

Recovery 中間件中提供了兩個配置方法 ?WithHandler()? 和 ?WithLogger()?。

  • ?WithHandler()?

func WithHandler(h HandlerFunc) Option {
    return func(o *options) {
        o.handler = h
    }
}

用于設(shè)置服務(wù)異常時可以使用自定義的 ?handler ?進(jìn)行處理,例如投遞異常信息到 sentry。

  • ?WithLogger()?

func WithLogger(logger log.Logger) Option {
    return func(o *options) {
        o.logger = logger
    }
}

用于設(shè)置中間件打印日志時使用的 ?logger?。

使用方法

http

var opts = []http.ServerOption{
    http.Middleware(
        recovery.Recovery(
      recovery.WithLogger(log.DefaultLogger),
            recovery.WithHandler(func(ctx context.Context, req, err interface{}) error {
                    // do someting
                    return nil
            }),
    ),
    ),
}
srv := http.NewServer(opts...)

grpc

var opts = []grpc.ServerOption{
    grpc.Middleware(
        recovery.Recovery(
            recovery.WithLogger(log.DefaultLogger),
            recovery.WithHandler(func(ctx context.Context, req, err interface{}) error {
                // do someting
                return nil
            }),
        ),
    ),
}
srv := grpc.NewServer(opts...)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號