codecamp

Kratos 异常恢复

异常恢复

Recovery 中间件用于异常恢复,服务出现异常的情况下,防止程序直接退出。

配置

Recovery 中间件中提供了两个配置方法 ​WithHandler()​ 和 ​WithLogger()​。

  • WithHandler()

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

用于设置服务异常时可以使用自定义的 ​handler ​进行处理,例如投递异常信息到 sentry。

  • WithLogger()

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

用于设置中间件打印日志时使用的 ​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...)


Kratos 限流器
Kratos 链路追踪
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Kratos 运维指南

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }