From fc5339a368ea090fac3815b23421fb7d190fdc9e Mon Sep 17 00:00:00 2001 From: Sumanth Chinthagunta Date: Sat, 15 Feb 2020 10:19:28 -0800 Subject: [PATCH] [W.I.P] refactor(logger): logger fields changed to map[string]interface{} (#1198) * support unix daemon socket * refactor(logger): logger fields changed to map[string]interface{} * improvement(logger): adding string to Level Parser * improvement(logger): rename ParseLevel to GetLevel --- logger/field.go | 43 ------------------------------------------- logger/level.go | 20 ++++++++++++++++++++ logger/logger.go | 26 +++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 44 deletions(-) delete mode 100644 logger/field.go diff --git a/logger/field.go b/logger/field.go deleted file mode 100644 index a91572ac..00000000 --- a/logger/field.go +++ /dev/null @@ -1,43 +0,0 @@ -package logger - -type FieldType uint8 - -type Encode func(*Field) string - -type Field struct { - Key string - Type FieldType - Value interface{} - Encode Encode -} - -func (f *Field) GetValue() interface{} { - if f.Encode != nil { - return f.Encode(f) - } - - return f.Value -} - -// preset common types for choosing encoder faster -const ( - UnknownType FieldType = iota - BoolType - DurationType - Float64Type - Float32Type - Int64Type - Int32Type - Int16Type - Int8Type - Uint64Type - Uint32Type - Uint16Type - Uint8Type - StringType - TimeType -) - -func Bool(key string, val bool) Field { - return Field{Key: key, Type: BoolType, Value: val} -} diff --git a/logger/level.go b/logger/level.go index d7a345be..b49ab52d 100644 --- a/logger/level.go +++ b/logger/level.go @@ -11,3 +11,23 @@ const ( PanicLevel FatalLevel ) + +func (l Level) String() string { + switch l { + case TraceLevel: + return "trace" + case DebugLevel: + return "debug" + case InfoLevel: + return "info" + case WarnLevel: + return "warn" + case ErrorLevel: + return "error" + case FatalLevel: + return "fatal" + case PanicLevel: + return "panic" + } + return "" +} diff --git a/logger/logger.go b/logger/logger.go index 8d7a4ece..f4e451a4 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -20,7 +20,9 @@ type Logger interface { // fmt.Printf. Logf(level Level, format string, v ...interface{}) // Fields set fields to always be logged - Fields(fields ...Field) Logger + Fields(fields map[string]interface{}) Logger + // Error set `error` field to be logged + Error(err error) Logger // SetLevel updates the logging level. SetLevel(Level) // String returns the name of logger @@ -47,3 +49,25 @@ func GetLogger(name string) (Logger, error) { return l, nil } + +// GetLevel converts a level string into a logger Level value. +// returns an error if the input string does not match known values. +func GetLevel(levelStr string) (Level, error) { + switch levelStr { + case TraceLevel.String(): + return TraceLevel, nil + case DebugLevel.String(): + return DebugLevel, nil + case InfoLevel.String(): + return InfoLevel, nil + case WarnLevel.String(): + return WarnLevel, nil + case ErrorLevel.String(): + return ErrorLevel, nil + case FatalLevel.String(): + return FatalLevel, nil + case PanicLevel.String(): + return PanicLevel, nil + } + return InfoLevel, fmt.Errorf("Unknown Level String: '%s', defaulting to NoLevel", levelStr) +}