58 lines
1.4 KiB
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())
|
||
|
}
|