mirror of
https://github.com/paralus/paralus.git
synced 2026-05-06 16:36:46 +00:00
* restructure rcloud-base as a single base controller * updated master.rest * moved sentry from internal to pkg as it is used by relay * removing unused rpc and it's dependencies * Fix usermgmt tests * Don't redefine variables in rest file Co-authored-by: Abin Simon <abin.simon@rafay.co>
99 lines
1.8 KiB
Go
99 lines
1.8 KiB
Go
package log
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
// Level is the level of logging for logger
|
|
type level string
|
|
|
|
// LogLevel constants
|
|
const (
|
|
Debug level = "debug"
|
|
Info level = "info"
|
|
Warn level = "warn"
|
|
Error level = "error"
|
|
)
|
|
|
|
func newConfig(l level) zap.Config {
|
|
var zl zapcore.Level
|
|
switch l {
|
|
case Debug:
|
|
zl = zap.DebugLevel
|
|
case Warn:
|
|
zl = zap.WarnLevel
|
|
case Info:
|
|
zl = zap.InfoLevel
|
|
case Error:
|
|
zl = zap.ErrorLevel
|
|
default:
|
|
zl = zap.InfoLevel
|
|
}
|
|
|
|
return zap.Config{
|
|
Level: zap.NewAtomicLevelAt(zl),
|
|
Encoding: "json",
|
|
EncoderConfig: zapcore.EncoderConfig{
|
|
TimeKey: "ts",
|
|
LevelKey: "level",
|
|
NameKey: "logger",
|
|
MessageKey: "msg",
|
|
StacktraceKey: "stacktrace",
|
|
CallerKey: "caller",
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
|
EncodeDuration: zapcore.SecondsDurationEncoder,
|
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
|
},
|
|
OutputPaths: []string{"stdout"},
|
|
ErrorOutputPaths: []string{"stdout"},
|
|
}
|
|
}
|
|
|
|
// Logger is a wrapper around zap sugared logger
|
|
type Logger struct {
|
|
*zap.SugaredLogger
|
|
}
|
|
|
|
// ChangeLevel changes the log level of logger
|
|
func (lg *Logger) ChangeLevel(lc <-chan string) {
|
|
for {
|
|
select {
|
|
case lvl := <-lc:
|
|
l := level(lvl)
|
|
cfg := newConfig(l)
|
|
zl, err := cfg.Build()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
lg.SugaredLogger = zl.Sugar()
|
|
}
|
|
}
|
|
}
|
|
|
|
var zl *Logger
|
|
var lo sync.Once
|
|
|
|
// GetLogger return instance of logger
|
|
func GetLogger() *Logger {
|
|
if zl == nil {
|
|
lo.Do(func() {
|
|
cfg := newConfig(Info)
|
|
z, err := cfg.Build()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
zl = &Logger{
|
|
SugaredLogger: z.Sugar(),
|
|
}
|
|
|
|
})
|
|
}
|
|
return zl
|
|
}
|