fix: platform that fails to set vt100

This commit is contained in:
源文雨 2023-03-01 21:13:18 +08:00
parent 6f96c389c4
commit 8f9a396821
2 changed files with 18 additions and 9 deletions

View File

@ -1,3 +1,5 @@
//go:build !windows
// Package console sets console's behavior on init
package console

View File

@ -1,3 +1,4 @@
// Package console sets console's behavior on init
package console
import (
@ -72,11 +73,11 @@ func init() {
mode |= windows.ENABLE_PROCESSED_OUTPUT // 启用处理后的输出
err = windows.SetConsoleMode(stdout, mode)
if err != nil {
panic(err)
}
// windows 带颜色 log 自定义格式
logrus.SetFormatter(&LogFormat{})
logrus.SetFormatter(&logFormat{hasColor: err == nil})
if err != nil {
logrus.Warnln("VT100设置失败, 将以无色模式输出")
}
err = setConsoleTitle("ZeroBot-Blugin " + banner.Version + " " + banner.Copyright)
if err != nil {
@ -95,17 +96,23 @@ const (
colorReset = "\x1b[0m"
)
// LogFormat specialize for zbp
type LogFormat struct{}
// logFormat specialize for zbp
type logFormat struct {
hasColor bool
}
// Format implements logrus.Formatter
func (f LogFormat) Format(entry *logrus.Entry) ([]byte, error) {
func (f logFormat) Format(entry *logrus.Entry) ([]byte, error) {
buf := new(bytes.Buffer)
buf.WriteByte('[')
buf.WriteString(getLogLevelColorCode(entry.Level))
if hasColor {
buf.WriteString(getLogLevelColorCode(entry.Level))
}
buf.WriteString(strings.ToUpper(entry.Level.String()))
buf.WriteString(colorReset)
if hasColor {
buf.WriteString(colorReset)
}
buf.WriteString("] ")
buf.WriteString(entry.Message)
buf.WriteString(" \n")