synchronization
This commit is contained in:
70
gpushare-scheduler-extender/pkg/log/level.go
Normal file
70
gpushare-scheduler-extender/pkg/log/level.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
type levelLogger struct {
|
||||
level *int32
|
||||
mu sync.Mutex
|
||||
log *zap.Logger
|
||||
}
|
||||
|
||||
type verbose bool
|
||||
|
||||
var l *levelLogger
|
||||
|
||||
func NewLoggerWithLevel(level int32, option ...zap.Option) {
|
||||
cfg := zap.NewProductionEncoderConfig()
|
||||
cfg.EncodeTime = zapcore.ISO8601TimeEncoder
|
||||
|
||||
core := zapcore.NewCore(
|
||||
zapcore.NewJSONEncoder(cfg),
|
||||
zapcore.Lock(os.Stdout),
|
||||
zap.NewAtomicLevel(),
|
||||
)
|
||||
|
||||
if option == nil {
|
||||
option = []zap.Option{}
|
||||
}
|
||||
option = append(option, zap.AddCaller(), zap.AddCallerSkip(1))
|
||||
l = &levelLogger{
|
||||
level: &level,
|
||||
mu: sync.Mutex{},
|
||||
log: zap.New(core, option...),
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
V for log level, normal usage example
|
||||
globalLogger default level 3, debug level 10
|
||||
example level:
|
||||
|
||||
api request 4
|
||||
api response 9
|
||||
|
||||
services func 5
|
||||
|
||||
db error 9
|
||||
db query 11
|
||||
db result 15
|
||||
*/
|
||||
func V(level int32) verbose {
|
||||
return level < *l.level
|
||||
}
|
||||
|
||||
func (v verbose) Info(format string, args ...interface{}) {
|
||||
if v {
|
||||
l.log.Info(fmt.Sprintf(format, args...))
|
||||
}
|
||||
}
|
||||
|
||||
func Fatal(format string, args ...interface{}) {
|
||||
l.log.Fatal(fmt.Sprintf(format, args...))
|
||||
|
||||
}
|
Reference in New Issue
Block a user