Skip to content

Commit

Permalink
✨ win 下 log 支持颜色
Browse files Browse the repository at this point in the history
  • Loading branch information
fumiama committed Dec 27, 2021
1 parent 657532f commit d464695
Showing 1 changed file with 56 additions and 4 deletions.
60 changes: 56 additions & 4 deletions main_win.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,60 @@ import (
)

func init() {
// windows 不支持带颜色的 log,故自定义格式
logrus.SetFormatter(&easy.Formatter{
LogFormat: "[%lvl%] %msg%\n",
})
// windows 带颜色 log 自定义格式
logrus.SetFormatter(&LogFormat{})
}

const (
colorCodePanic = "\x1b[1;31m" // color.Style{color.Bold, color.Red}.String()
colorCodeFatal = "\x1b[1;31m" // color.Style{color.Bold, color.Red}.String()
colorCodeError = "\x1b[31m" // color.Style{color.Red}.String()
colorCodeWarn = "\x1b[33m" // color.Style{color.Yellow}.String()
colorCodeInfo = "\x1b[37m" // color.Style{color.White}.String()
colorCodeDebug = "\x1b[32m" // color.Style{color.Green}.String()
colorCodeTrace = "\x1b[36m" // color.Style{color.Cyan}.String()
colorReset = "\x1b[0m"
)

// LogFormat specialize for zbp
type LogFormat struct{}

// Format implements logrus.Formatter
func (f LogFormat) Format(entry *logrus.Entry) ([]byte, error) {
buf := new(bytes.Buffer)

buf.WriteString(getLogLevelColorCode(entry.Level))

buf.WriteByte('[')
buf.WriteString(strings.ToUpper(entry.Level.String()))
buf.WriteString("]: ")
buf.WriteString(entry.Message)
buf.WriteString(" \n")

buf.WriteString(colorReset)

return buf.Bytes(), nil
}

// getLogLevelColorCode 获取日志等级对应色彩code
func getLogLevelColorCode(level logrus.Level) string {
switch level {
case logrus.PanicLevel:
return colorCodePanic
case logrus.FatalLevel:
return colorCodeFatal
case logrus.ErrorLevel:
return colorCodeError
case logrus.WarnLevel:
return colorCodeWarn
case logrus.InfoLevel:
return colorCodeInfo
case logrus.DebugLevel:
return colorCodeDebug
case logrus.TraceLevel:
return colorCodeTrace

default:
return colorCodeInfo
}
}

0 comments on commit d464695

Please sign in to comment.