* Implement QueryArray and PostArray methods

* Refactor GetQuery and GetPostForm

* Removed additional Iota

I think assigning iota to each constant is not required

* Add 1.7 test.

* Add codecov.io

* corrected a typo in README

* remove coveralls services.

Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>

* Update TravisCI to Gitter webhook

* Add codecov.yml Gitter webhook

* Changed imports to gopkg instead of github in README (#733)

* Add contribution guide

* Update go get for stable version

In the future, github default branch will be develop so running `go get github.com/gin-gonic/gin` will pull latest code from develop.

* Changed imports to gopkg instead of github in README

* Update README.md

* Logger: skip ANSI color commands if output is not a tty
This commit is contained in:
Javier Provecho Fernandez
2016-12-03 10:10:40 +01:00
committed by GitHub
parent bb159f9260
commit 32cab500ec
7 changed files with 105 additions and 28 deletions

View File

@ -7,7 +7,10 @@ package gin
import (
"fmt"
"io"
"os"
"time"
"golang.org/x/crypto/ssh/terminal"
)
var (
@ -44,6 +47,11 @@ 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 outFile, ok := out.(*os.File); ok {
isTerm = terminal.IsTerminal(int(outFile.Fd()))
}
var skip map[string]struct{}
if length := len(notlogged); length > 0 {
@ -71,8 +79,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",