This repository has been archived on 2021-06-21. You can view files and clone it, but cannot push or open issues/pull-requests.
beaver/level.go

107 lines
1.7 KiB
Go

package beaver
import (
"fmt"
"strings"
"go.jolheiser.com/beaver/color"
)
var bold = color.New(color.Bold)
// Level defines a Beaver logging level
type Level int
const (
TRACE Level = iota
DEBUG
INFO
WARN
ERROR
FATAL
)
// String returns a human-friendly string
func (l Level) String() string {
switch l {
case TRACE:
return "Trace"
case DEBUG:
return "Debug"
case INFO:
return "Info"
case WARN:
return "Warn"
case ERROR:
return "Error"
case FATAL:
return "Fatal"
default:
return "N/A"
}
}
// Prefix returns a prefix for a logging level, optionally colored
func (l Level) Prefix() string {
var letter string
switch l {
case TRACE:
letter = "T"
case DEBUG:
letter = "D"
case INFO:
letter = "I"
case WARN:
letter = "W"
case ERROR:
letter = "E"
case FATAL:
letter = "F"
}
return fmt.Sprintf("[%s]", letter)
}
// Color returns a Level's color, defaulting to bold
func (l Level) Color() color.Color {
switch l {
case TRACE:
return color.Trace
case DEBUG:
return color.Debug
case INFO:
return color.Info
case WARN:
return color.Warn
case ERROR:
return color.Error
case FATAL:
return color.Fatal
default:
return bold
}
}
// Levels returns a list of Beaver logging levels
func Levels() []Level {
return []Level{TRACE, DEBUG, INFO, WARN, ERROR, FATAL}
}
// ParseLevel parses a string and returns a Beaver Level, defaulting to Info
func ParseLevel(level string) Level {
switch strings.ToUpper(level) {
case "T", "TRACE":
return TRACE
case "D", "DEBUG":
return DEBUG
case "I", "INFO":
return INFO
case "W", "WARN":
return WARN
case "E", "ERROR":
return ERROR
case "F", "FATAL":
return FATAL
}
return INFO
}