api/pkg/logging/factory.go
Peter Kurfer d70ba748f5 Introduce Lifecycle for every endpoint and manage listeners in the renamed Orchestrator
- merge packages to get a more concise layout because plugins are no more and therefore there's not a lot to be exported
- fix test logger
- rework config parsing to be easier and more transparent
- remove unnecessary APIs because dynamic endpoint handling is rather a won't implement
2021-02-10 20:26:45 +00:00

57 lines
1.2 KiB
Go

package logging
import (
"strings"
"testing"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var (
loggingConfig = zap.NewProductionConfig()
)
func ConfigureLogging(
level zap.AtomicLevel,
developmentLogging bool,
initialFields map[string]interface{},
) {
loggingConfig.Level = level
loggingConfig.Development = developmentLogging
if initialFields != nil {
loggingConfig.InitialFields = initialFields
}
}
func ParseLevel(levelString string) zap.AtomicLevel {
switch strings.ToLower(levelString) {
case "debug":
return zap.NewAtomicLevelAt(zapcore.DebugLevel)
case "info":
return zap.NewAtomicLevelAt(zapcore.InfoLevel)
case "warn":
return zap.NewAtomicLevelAt(zapcore.WarnLevel)
case "error":
return zap.NewAtomicLevelAt(zapcore.ErrorLevel)
case "fatal":
return zap.NewAtomicLevelAt(zapcore.FatalLevel)
default:
return zap.NewAtomicLevelAt(zapcore.InfoLevel)
}
}
func CreateLogger() (Logger, error) {
if zapLogger, err := loggingConfig.Build(zap.AddCallerSkip(2)); err != nil {
return nil, err
} else {
return NewLogger(zapLogger), nil
}
}
func CreateTestLogger(tb testing.TB) Logger {
return &testLogger{
tb: tb,
encoder: zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig()),
}
}