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 (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -17,17 +18,44 @@ func ErrorLogger() HandlerFunc {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Logger() HandlerFunc {
 | 
					var (
 | 
				
			||||||
	return func(c *Context) {
 | 
						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
 | 
							// Start timer
 | 
				
			||||||
		t := time.Now()
 | 
							start := time.Now()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Process request
 | 
							// Process request
 | 
				
			||||||
		c.Next()
 | 
							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
 | 
							// Calculate resolution time
 | 
				
			||||||
		log.Printf("%s in %v", c.Req.RequestURI, time.Since(t))
 | 
					 | 
				
			||||||
		if len(c.Errors) > 0 {
 | 
							if len(c.Errors) > 0 {
 | 
				
			||||||
			fmt.Println(c.Errors.String())
 | 
								fmt.Println(c.Errors.String())
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user