74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package zwrap
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/rs/zerolog"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
colorBlack = iota + 30
|
|
colorRed
|
|
colorGreen
|
|
colorYellow
|
|
colorBlue
|
|
colorMagenta
|
|
colorCyan
|
|
colorWhite
|
|
|
|
colorBold = 1
|
|
colorDarkGray = 90
|
|
)
|
|
|
|
var LevelColors = map[zerolog.Level]int{
|
|
zerolog.TraceLevel: colorMagenta,
|
|
zerolog.DebugLevel: colorYellow,
|
|
zerolog.InfoLevel: colorGreen,
|
|
zerolog.WarnLevel: colorRed,
|
|
zerolog.ErrorLevel: colorRed,
|
|
zerolog.FatalLevel: colorRed,
|
|
zerolog.PanicLevel: colorRed,
|
|
}
|
|
|
|
// Colorize returns the string s wrapped in ANSI code c, unless disabled is true or c is 0.
|
|
func Colorize(s interface{}, c int, disabled bool) string {
|
|
if disabled {
|
|
return fmt.Sprintf("%s", s)
|
|
}
|
|
return fmt.Sprintf("\x1b[%dm%v\x1b[0m", c, s)
|
|
}
|
|
|
|
// FormattedLevels are used by ConsoleWriter's consoleDefaultFormatLevel
|
|
// for a short level name.
|
|
var FormattedLevels = map[zerolog.Level]string{
|
|
zerolog.TraceLevel: "TRC",
|
|
zerolog.DebugLevel: "DBG",
|
|
zerolog.InfoLevel: "INF",
|
|
zerolog.WarnLevel: "WRN",
|
|
zerolog.ErrorLevel: "ERR",
|
|
zerolog.FatalLevel: "FTL",
|
|
zerolog.PanicLevel: "PNC",
|
|
}
|
|
|
|
func LogLevelFmt(noColor bool) zerolog.Formatter {
|
|
return func(i interface{}) string {
|
|
var l string
|
|
if ll, ok := i.(string); ok {
|
|
level, _ := zerolog.ParseLevel(ll)
|
|
fl, ok := FormattedLevels[level]
|
|
if ok {
|
|
l = Colorize(fl, LevelColors[level], noColor)
|
|
} else {
|
|
l = strings.ToUpper(ll)[0:3]
|
|
}
|
|
} else {
|
|
if i == nil {
|
|
l = "???"
|
|
} else {
|
|
l = strings.ToUpper(fmt.Sprintf("%s", i))[0:3]
|
|
}
|
|
}
|
|
return l
|
|
}
|
|
}
|