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 sets console's behavior on init
package console package console

View File

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