diff --git a/.travis.yml b/.travis.yml index 33051749..53f436f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,9 @@ language: go sudo: false go: - 1.4 - - 1.5 - - 1.6 - - 1.7 + - 1.5.4 + - 1.6.4 + - 1.7.4 - tip script: diff --git a/logger.go b/logger.go index d56bc628..7c2a72be 100644 --- a/logger.go +++ b/logger.go @@ -7,7 +7,10 @@ package gin import ( "fmt" "io" + "os" "time" + + "github.com/mattn/go-isatty" ) var ( @@ -44,6 +47,12 @@ func Logger() HandlerFunc { // LoggerWithWriter instance a Logger middleware with the specified writter buffer. // Example: os.Stdout, a file opened in write mode, a socket... func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc { + isTerm := true + + if w, ok := out.(*os.File); !ok || !isatty.IsTerminal(w.Fd()) { + isTerm = false + } + var skip map[string]struct{} if length := len(notlogged); length > 0 { @@ -71,8 +80,11 @@ func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc { clientIP := c.ClientIP() method := c.Request.Method statusCode := c.Writer.Status() - statusColor := colorForStatus(statusCode) - methodColor := colorForMethod(method) + var statusColor, methodColor string + if isTerm { + statusColor = colorForStatus(statusCode) + methodColor = colorForMethod(method) + } comment := c.Errors.ByType(ErrorTypePrivate).String() fmt.Fprintf(out, "[GIN] %v |%s %3d %s| %13v | %s |%s %s %-7s %s\n%s",