Fix Windows console printing (#8805)

Print to console which does translation and not directly to stdout.

Fixes #8804
This commit is contained in:
Klaus Post 2020-01-13 22:05:51 +01:00 committed by Harshavardhana
parent 3320878dfb
commit 627fdfeab7
3 changed files with 15 additions and 4 deletions

View file

@ -119,16 +119,16 @@ func (f fatalMsg) pretty(msg string, args ...interface{}) {
ansiSaveAttributes()
// Print banner with or without the log tag
if !tagPrinted {
fmt.Print(logBanner)
c.Print(logBanner)
tagPrinted = true
} else {
fmt.Print(emptyBanner)
c.Print(emptyBanner)
}
// Restore the text color of the error message
ansiRestoreAttributes()
ansiMoveRight(bannerWidth)
// Continue error message printing
fmt.Println(line)
c.Println(line)
break
}
}

View file

@ -25,6 +25,7 @@ import (
"github.com/minio/minio/cmd/logger"
"github.com/minio/minio/cmd/logger/message/log"
"github.com/minio/minio/pkg/color"
"github.com/minio/minio/pkg/console"
)
// Target implements loggerTarget to send log
@ -109,7 +110,7 @@ func (c *Target) Send(e interface{}, logKind string) error {
apiString, timeString, deploymentID, requestID, remoteHost, host, userAgent,
msg, tagString, strings.Join(trace, "\n"))
fmt.Println(output)
console.Println(output)
return nil
}

View file

@ -19,6 +19,7 @@ package logger
import (
"fmt"
"regexp"
"runtime"
"github.com/minio/minio/pkg/color"
)
@ -32,18 +33,27 @@ func ansiEscape(format string, args ...interface{}) {
}
func ansiMoveRight(n int) {
if runtime.GOOS == "windows" {
return
}
if color.IsTerminal() {
ansiEscape("[%dC", n)
}
}
func ansiSaveAttributes() {
if runtime.GOOS == "windows" {
return
}
if color.IsTerminal() {
ansiEscape("7")
}
}
func ansiRestoreAttributes() {
if runtime.GOOS == "windows" {
return
}
if color.IsTerminal() {
ansiEscape("8")
}