12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package middleware
- import (
- "bytes"
- "github.com/e421083458/golang_common/lib"
- "github.com/gin-gonic/gin"
- "github.com/go_gateway_admin/public"
- "io/ioutil"
- "time"
- )
- // 请求进入日志
- func RequestInLog(c *gin.Context) {
- traceContext := lib.NewTrace()
- if traceId := c.Request.Header.Get("com-header-rid"); traceId != "" {
- traceContext.TraceId = traceId
- }
- if spanId := c.Request.Header.Get("com-header-spanid"); spanId != "" {
- traceContext.SpanId = spanId
- }
- c.Set("startExecTime", time.Now())
- c.Set("trace", traceContext)
- bodyBytes, _ := ioutil.ReadAll(c.Request.Body)
- c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // Write body back
- lib.Log.TagInfo(traceContext, "_com_request_in", map[string]interface{}{
- "uri": c.Request.RequestURI,
- "method": c.Request.Method,
- "args": c.Request.PostForm,
- "body": string(bodyBytes),
- "from": c.ClientIP(),
- })
- }
- // 请求输出日志
- func RequestOutLog(c *gin.Context) {
- // after request
- endExecTime := time.Now()
- response, _ := c.Get("response")
- st, _ := c.Get("startExecTime")
- startExecTime, _ := st.(time.Time)
- public.ComLogNotice(c, "_com_request_out", map[string]interface{}{
- "uri": c.Request.RequestURI,
- "method": c.Request.Method,
- "args": c.Request.PostForm,
- "from": c.ClientIP(),
- "response": response,
- "proc_time": endExecTime.Sub(startExecTime).Seconds(),
- })
- }
- func RequestLog() gin.HandlerFunc {
- return func(c *gin.Context) {
- RequestInLog(c)
- defer RequestOutLog(c)
- c.Next()
- }
- }
|