Better logger
- Includes http method - Includes coloured status code - Better formatting
This commit is contained in:
		
							
								
								
									
										36
									
								
								logger.go
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								logger.go
									
									
									
									
									
								
							@ -3,6 +3,7 @@ package gin
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -17,17 +18,44 @@ func ErrorLogger() HandlerFunc {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Logger() HandlerFunc {
 | 
			
		||||
	return func(c *Context) {
 | 
			
		||||
var (
 | 
			
		||||
	green  = string([]byte{27, 91, 57, 55, 59, 52, 50, 109})
 | 
			
		||||
	white  = string([]byte{27, 91, 57, 48, 59, 52, 55, 109})
 | 
			
		||||
	yellow = string([]byte{27, 91, 57, 55, 59, 52, 51, 109})
 | 
			
		||||
	red    = string([]byte{27, 91, 57, 55, 59, 52, 49, 109})
 | 
			
		||||
	reset  = string([]byte{27, 91, 48, 109})
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Logger() HandlerFunc {
 | 
			
		||||
	logger := log.New(os.Stdout, "", 0)
 | 
			
		||||
	return func(c *Context) {
 | 
			
		||||
		// Start timer
 | 
			
		||||
		t := time.Now()
 | 
			
		||||
		start := time.Now()
 | 
			
		||||
 | 
			
		||||
		// Process request
 | 
			
		||||
		c.Next()
 | 
			
		||||
 | 
			
		||||
		var color string
 | 
			
		||||
		code := c.Writer.Status()
 | 
			
		||||
		switch {
 | 
			
		||||
		case code >= 200 && code <= 299:
 | 
			
		||||
			color = green
 | 
			
		||||
		case code >= 300 && code <= 399:
 | 
			
		||||
			color = white
 | 
			
		||||
		case code >= 400 && code <= 499:
 | 
			
		||||
			color = yellow
 | 
			
		||||
		default:
 | 
			
		||||
			color = red
 | 
			
		||||
		}
 | 
			
		||||
		latency := time.Since(start)
 | 
			
		||||
		logger.Printf("[GIN] %v |%s %3d %s| %12v | %3s %s\n",
 | 
			
		||||
			time.Now().Format("2006/01/02 - 15:04:05"),
 | 
			
		||||
			color, c.Writer.Status(), reset,
 | 
			
		||||
			latency,
 | 
			
		||||
			c.Req.Method, c.Req.URL.Path,
 | 
			
		||||
		)
 | 
			
		||||
 | 
			
		||||
		// Calculate resolution time
 | 
			
		||||
		log.Printf("%s in %v", c.Req.RequestURI, time.Since(t))
 | 
			
		||||
		if len(c.Errors) > 0 {
 | 
			
		||||
			fmt.Println(c.Errors.String())
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user