Selaa lähdekoodia

Improves error log formatting

Manu Mtz-Almeida 11 vuotta sitten
vanhempi
commit
f72fcdf5ba
3 muutettua tiedostoa jossa 20 lisäystä ja 7 poistoa
  1. 18 5
      gin.go
  2. 1 1
      logger.go
  3. 1 1
      recovery.go

+ 18 - 5
gin.go

@@ -1,8 +1,10 @@
 package gin
 
 import (
+	"bytes"
 	"encoding/json"
 	"encoding/xml"
+	"fmt"
 	"github.com/julienschmidt/httprouter"
 	"html/template"
 	"log"
@@ -22,17 +24,19 @@ type (
 
 	// Used internally to collect a error ocurred during a http request.
 	ErrorMsg struct {
-		Message string      `json:"msg"`
-		Meta    interface{} `json:"meta"`
+		Err  string      `json:"error"`
+		Meta interface{} `json:"meta"`
 	}
 
+	ErrorMsgs []ErrorMsg
+
 	// Context is the most important part of gin. It allows us to pass variables between middleware,
 	// manage the flow, validate the JSON of a request and render a JSON response for example.
 	Context struct {
 		Req      *http.Request
 		Writer   http.ResponseWriter
 		Keys     map[string]interface{}
-		Errors   []ErrorMsg
+		Errors   ErrorMsgs
 		Params   httprouter.Params
 		handlers []HandlerFunc
 		engine   *Engine
@@ -57,6 +61,15 @@ type (
 	}
 )
 
+func (a ErrorMsgs) String() string {
+	var buffer bytes.Buffer
+	for i, msg := range a {
+		text := fmt.Sprintf("Error #%02d: %s \n     Meta: %v\n\n", (i + 1), msg.Err, msg.Meta)
+		buffer.WriteString(text)
+	}
+	return buffer.String()
+}
+
 // Returns a new blank Engine instance without any middleware attached.
 // The most basic configuration
 func New() *Engine {
@@ -240,8 +253,8 @@ func (c *Context) Fail(code int, err error) {
 // A middleware can be used to collect all the errors and push them to a database together, print a log, or append it in the HTTP response.
 func (c *Context) Error(err error, meta interface{}) {
 	c.Errors = append(c.Errors, ErrorMsg{
-		Message: err.Error(),
-		Meta:    meta,
+		Err:  err.Error(),
+		Meta: meta,
 	})
 }
 

+ 1 - 1
logger.go

@@ -29,7 +29,7 @@ func Logger() HandlerFunc {
 		// Calculate resolution time
 		log.Printf("%s in %v", c.Req.RequestURI, time.Since(t))
 		if len(c.Errors) > 0 {
-			fmt.Println(c.Errors)
+			fmt.Println(c.Errors.String())
 		}
 	}
 }

+ 1 - 1
recovery.go

@@ -83,7 +83,7 @@ func Recovery() HandlerFunc {
 	return func(c *Context) {
 		defer func() {
 			if len(c.Errors) > 0 {
-				log.Println(c.Errors)
+				log.Println(c.Errors.String())
 			}
 			if err := recover(); err != nil {
 				stack := stack(3)