diff --git a/logger.go b/logger.go index c679c787..fe2ce672 100644 --- a/logger.go +++ b/logger.go @@ -8,8 +8,10 @@ import ( "fmt" "io" "os" + "runtime" "time" + "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" ) @@ -56,11 +58,15 @@ func Logger() HandlerFunc { // Example: os.Stdout, a file opened in write mode, a socket... func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc { isTerm := true + cout := out if w, ok := out.(*os.File); !ok || - (os.Getenv("TERM") == "dumb" || (!isatty.IsTerminal(w.Fd()) && !isatty.IsCygwinTerminal(w.Fd()))) || - disableColor { + disableColor || + os.Getenv("TERM") == "dumb" || + !isatty.IsTerminal(w.Fd()) && !isatty.IsCygwinTerminal(w.Fd()) { isTerm = false + } else if runtime.GOOS == "windows" { + cout = colorable.NewColorable(w) } var skip map[string]struct{} @@ -103,7 +109,7 @@ func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc { path = path + "?" + raw } - fmt.Fprintf(out, "[GIN] %v |%s %3d %s| %13v | %15s |%s %-7s %s %s\n%s", + fmt.Fprintf(cout, "[GIN] %v |%s %3d %s| %13v | %15s |%s %-7s %s %s\n%s", end.Format("2006/01/02 - 15:04:05"), statusColor, statusCode, resetColor, latency, diff --git a/mode.go b/mode.go index b0d2c27d..02ad16d2 100644 --- a/mode.go +++ b/mode.go @@ -28,9 +28,6 @@ const ( // middleware output like Logger() or Recovery(). // Note that both Logger and Recovery provides custom ways to configure their // output io.Writer. -// To support coloring in Windows use: -// import "github.com/mattn/go-colorable" -// gin.DefaultWriter = colorable.NewColorableStdout() var DefaultWriter io.Writer = os.Stdout var DefaultErrorWriter io.Writer = os.Stderr diff --git a/vendor/vendor.json b/vendor/vendor.json index bcefee10..0e642ba2 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -45,6 +45,12 @@ "revision": "8f2d6ace262eba462e9beb552382c98be51d807b", "revisionTime": "2015-05-31T20:46:25Z" }, + { + "checksumSHA1": "cTDA66oZUy18cIzJsU1diKq+9CE=", + "path": "github.com/mattn/go-colorable", + "revision": "ad5389df28cdac544c99bd7b9161a0b5b6ca9d1b", + "revisionTime": "2017-08-16T03:18:13Z" + }, { "checksumSHA1": "U6lX43KDDlNOn+Z0Yyww+ZzHfFo=", "path": "github.com/mattn/go-isatty", @@ -91,7 +97,7 @@ "revisionTime": "2016-10-18T08:54:36Z" }, { - "checksumSHA1": "TVEkpH3gq84iQ39I4R+mlDwjuVI=", + "checksumSHA1": "/oZpHfYc+ZgOwYAhlvcMhmETYpw=", "path": "golang.org/x/sys/unix", "revision": "99f16d856c9836c42d24e7ab64ea72916925fa97", "revisionTime": "2017-03-08T15:04:45Z"