You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
469 B

package logger
import (
"context"
"time"
"go.uber.org/zap/zapcore"
)
type LevelProvider = func(ctx context.Context, curLevel zapcore.Level) zapcore.Level
func SetLevelObserver(ctx context.Context, interval time.Duration, provider LevelProvider) {
go onceLevelObserver.Do(func() {
t := time.NewTicker(interval)
defer t.Stop()
for {
select {
case <-t.C:
level.SetLevel(provider(ctx, level.Level()))
case <-ctx.Done():
return
}
}
})
}