diff --git a/console/console.go b/console/console_ansi.go similarity index 92% rename from console/console.go rename to console/console_ansi.go index 5c0d5048..f171297e 100644 --- a/console/console.go +++ b/console/console_ansi.go @@ -1,3 +1,5 @@ +//go:build !windows + // Package console sets console's behavior on init package console diff --git a/console/console_windows.go b/console/console_windows.go index 5727ac42..6280150a 100644 --- a/console/console_windows.go +++ b/console/console_windows.go @@ -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")