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) +}