|
@@ -5,10 +5,9 @@
|
|
|
package gin
|
|
package gin
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "log"
|
|
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+ "io"
|
|
|
"time"
|
|
"time"
|
|
|
-
|
|
|
|
|
- "github.com/mattn/go-colorable"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
var (
|
|
@@ -30,18 +29,20 @@ func ErrorLoggerT(typ uint32) HandlerFunc {
|
|
|
return func(c *Context) {
|
|
return func(c *Context) {
|
|
|
c.Next()
|
|
c.Next()
|
|
|
|
|
|
|
|
- errs := c.Errors.ByType(typ)
|
|
|
|
|
- if len(errs) > 0 {
|
|
|
|
|
- // -1 status code = do not change current one
|
|
|
|
|
- c.JSON(-1, c.Errors)
|
|
|
|
|
|
|
+ if !c.Writer.Written() {
|
|
|
|
|
+ errs := c.Errors.ByType(typ)
|
|
|
|
|
+ if len(errs) > 0 {
|
|
|
|
|
+ c.JSON(-1, c.Errors)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func Logger() HandlerFunc {
|
|
func Logger() HandlerFunc {
|
|
|
- stdlogger := log.New(colorable.NewColorableStdout(), "", 0)
|
|
|
|
|
- //errlogger := log.New(os.Stderr, "", 0)
|
|
|
|
|
|
|
+ return LoggerWithFile(DefaultLogFile)
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
+func LoggerWithFile(out io.Writer) HandlerFunc {
|
|
|
return func(c *Context) {
|
|
return func(c *Context) {
|
|
|
// Start timer
|
|
// Start timer
|
|
|
start := time.Now()
|
|
start := time.Now()
|
|
@@ -58,15 +59,16 @@ func Logger() HandlerFunc {
|
|
|
statusCode := c.Writer.Status()
|
|
statusCode := c.Writer.Status()
|
|
|
statusColor := colorForStatus(statusCode)
|
|
statusColor := colorForStatus(statusCode)
|
|
|
methodColor := colorForMethod(method)
|
|
methodColor := colorForMethod(method)
|
|
|
|
|
+ comment := c.Errors.String()
|
|
|
|
|
|
|
|
- stdlogger.Printf("[GIN] %v |%s %3d %s| %12v | %s |%s %s %-7s %s\n%s",
|
|
|
|
|
|
|
+ fmt.Fprintf(out, "[GIN] %v |%s %3d %s| %12v | %s |%s %s %-7s %s\n%s",
|
|
|
end.Format("2006/01/02 - 15:04:05"),
|
|
end.Format("2006/01/02 - 15:04:05"),
|
|
|
statusColor, statusCode, reset,
|
|
statusColor, statusCode, reset,
|
|
|
latency,
|
|
latency,
|
|
|
clientIP,
|
|
clientIP,
|
|
|
methodColor, reset, method,
|
|
methodColor, reset, method,
|
|
|
c.Request.URL.Path,
|
|
c.Request.URL.Path,
|
|
|
- c.Errors.String(),
|
|
|
|
|
|
|
+ comment,
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|