Merge branch 'master' of https://github.com/zaynetro/gin into zaynetro-master

This commit is contained in:
Javier Provecho Fernandez 2015-10-02 11:11:27 +02:00
commit 94938916c8
2 changed files with 46 additions and 19 deletions

View File

@ -46,7 +46,17 @@ func Logger() HandlerFunc {
// Instance a Logger middleware with the specified writter buffer. // Instance a Logger middleware with the specified writter buffer.
// Example: os.Stdout, a file opened in write mode, a socket... // Example: os.Stdout, a file opened in write mode, a socket...
func LoggerWithWriter(out io.Writer) HandlerFunc { func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc {
var skip map[string]struct{}
if length := len(notlogged); length > 0 {
skip = make(map[string]struct{}, length)
for _, path := range notlogged {
skip[path] = struct{}{}
}
}
return func(c *Context) { return func(c *Context) {
// Start timer // Start timer
start := time.Now() start := time.Now()
@ -55,6 +65,8 @@ func LoggerWithWriter(out io.Writer) HandlerFunc {
// Process request // Process request
c.Next() c.Next()
// Log only when path is not being skipped
if _, ok := skip[path]; !ok {
// Stop timer // Stop timer
end := time.Now() end := time.Now()
latency := end.Sub(start) latency := end.Sub(start)
@ -76,6 +88,7 @@ func LoggerWithWriter(out io.Writer) HandlerFunc {
comment, comment,
) )
} }
}
} }
func colorForStatus(code int) string { func colorForStatus(code int) string {

View File

@ -124,3 +124,17 @@ func TestErrorLogger(t *testing.T) {
assert.Equal(t, w.Code, 500) assert.Equal(t, w.Code, 500)
assert.Equal(t, w.Body.String(), "hola!") assert.Equal(t, w.Body.String(), "hola!")
} }
func TestSkippingPaths(t *testing.T) {
buffer := new(bytes.Buffer)
router := New()
router.Use(LoggerWithWriter(buffer, "/skipped"))
router.GET("/logged", func(c *Context) {})
router.GET("/skipped", func(c *Context) {})
performRequest(router, "GET", "/logged")
assert.Contains(t, buffer.String(), "200")
performRequest(router, "GET", "/skipped")
assert.Contains(t, buffer.String(), "")
}