import (
"context"
"github.com/pingcap/log"
"go.uber.org/zap"
iris "github.com/kataras/iris/v12"
)
func NewContext(ctx iris.Context, fields ...zap.Field) iris.Context {
ctx.Values().Set(loggerKey, WithContext(ctx).With(fields...))
return ctx
}
func WithContext(ctx iris.Context) *zap.Logger {
if ctx == nil {
return log.L()
}
if ctxLogger, ok := ctx.Values().Get(loggerKey).(*zap.Logger); ok {
return ctxLogger
} else {
return log.L()
}
}
func NewStdContext(ctx context.Context, fields ...zap.Field) iris.Context {
ctx.WithValue(ctx, loggerKey, WithStdContext(ctx).With(fields...))
return ctx
}
func WithStdContext(ctx context.Context) *zap.Logger {
if ctx == nil {
return log.L()
}
if ctxLogger, ok := ctx.Value(loggerKey).(*zap.Logger); ok {
return ctxLogger
} else {
return log.L()
}
}
分别用到了 iris.Context 和 context.Context ,现在要给每个 context 写一个绑定方法。 请教下,有没有更好的实现方式?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.