/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cloud/tasks/logging/logger.go
79 строк
2 KB
Sergei
[Logging] Introduce contextLogger to enhance logging with context support (#5336)
03 мар 2026, 15:14
Не верифицирован
03 мар 2026, 15:14
35c9133
Код
Авторство
О чём код?
package logging import ( "context" "fmt" logging_config "github.com/ydb-platform/nbs/cloud/tasks/logging/config" "github.com/ydb-platform/nbs/library/go/core/log" ) //////////////////////////////////////////////////////////////////////////////// type Logger interface { log.Logger } //////////////////////////////////////////////////////////////////////////////// type Level = log.Level const ( TraceLevel = log.TraceLevel DebugLevel = log.DebugLevel InfoLevel = log.InfoLevel WarnLevel = log.WarnLevel ErrorLevel = log.ErrorLevel FatalLevel = log.FatalLevel ) //////////////////////////////////////////////////////////////////////////////// type loggerKey struct{} type loggerNameKey struct{} func SetLogger(ctx context.Context, logger Logger) context.Context { return WithCommonFields(context.WithValue(ctx, loggerKey{}, logger)) } func getLogger(ctx context.Context) Logger { logger, _ := ctx.Value(loggerKey{}).(Logger) if logger == nil { return nil } if name, ok := ctx.Value(loggerNameKey{}).(string); ok { return logger.WithName(name) } return logger } func GetLogger(ctx context.Context) Logger { logger := getLogger(ctx) if logger == nil { return nil } return &contextLogger{ ctx: ctx, logger: logger, } } func AddCallerSkip(ctx context.Context, skip int) context.Context { return SetLogger(ctx, log.AddCallerSkip(GetLogger(ctx), 1)) } //////////////////////////////////////////////////////////////////////////////// func NewLogger(config *logging_config.LoggingConfig) Logger { switch logging := config.GetLogging().(type) { case *logging_config.LoggingConfig_LoggingStderr: return NewStderrLogger(Level(config.GetLevel())) case *logging_config.LoggingConfig_LoggingJournald: return NewJournaldLogger(Level(config.GetLevel())) default: panic(fmt.Errorf("unknown logger %v", logging)) } }