go-kit/log/log.go

58 lines
1.4 KiB
Go

package log
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func GetLoggerConfig(logLevel string, stdouts []string, stderrs []string, encoding string) zap.Config {
level := zap.InfoLevel
if logLevel == "debug" {
level = zap.DebugLevel
}
if logLevel == "error" {
level = zap.ErrorLevel
}
if logLevel == "warn" {
level = zap.WarnLevel
}
if logLevel == "fatal" {
level = zap.FatalLevel
}
// Get a new logger
encoderCfg := zap.NewProductionEncoderConfig()
encoderCfg.TimeKey = "timegenerated"
encoderCfg.LevelKey = "log.level"
encoderCfg.EncodeTime = zapcore.RFC3339TimeEncoder
encoderCfg.EncodeLevel = zapcore.CapitalLevelEncoder
config := zap.Config{
Level: zap.NewAtomicLevelAt(level),
Development: false,
DisableCaller: true,
DisableStacktrace: false,
Sampling: nil,
Encoding: encoding,
EncoderConfig: encoderCfg,
OutputPaths: stdouts,
ErrorOutputPaths: stderrs,
InitialFields: map[string]interface{}{
//"pid": os.Getpid(),
},
}
return config
}
// GetLogger returns a new logger with the specified log level.
//
// Parameters:
// - logLevel: a string representing the log level ("debug", "error", "warn", "fatal")
//
// Return type(s):
// - *zap.Logger: a pointer to the logger
func GetLogger(logLevel string) *zap.Logger {
return zap.Must(GetLoggerConfig(logLevel, []string{"stdout"}, []string{"stderr"}, "json").Build())
}