From 7b6e0fc4dcfdb7998424daf3cd5576211df8f50a Mon Sep 17 00:00:00 2001
From: dtapps
Date: Wed, 3 Jan 2024 15:44:41 +0800
Subject: [PATCH] - optimization gorm
---
README.md | 2 +-
api_gorm_record.go | 116 ++++++++++++++++++++++-----------------------
gin_gorm.go | 14 ++----
gin_gorm_record.go | 91 ++++++++++++++++-------------------
gin_slog.go | 14 ++----
gin_slog_record.go | 71 ++++++++++++---------------
go.mod | 4 +-
go.sum | 17 ++-----
version.go | 2 +-
9 files changed, 144 insertions(+), 187 deletions(-)
diff --git a/README.md b/README.md
index 88d188a..f4af4da 100644
--- a/README.md
+++ b/README.md
@@ -13,5 +13,5 @@
#### 安装
```shell
-go get -v -u go.dtapp.net/golog@v1.0.108
+go get -v -u go.dtapp.net/golog@v1.0.109
```
diff --git a/api_gorm_record.go b/api_gorm_record.go
index e3e2bba..aaa4e2d 100644
--- a/api_gorm_record.go
+++ b/api_gorm_record.go
@@ -12,28 +12,27 @@ import (
)
// 模型
-type apiPostgresqlLog struct {
- LogID int64 `gorm:"primaryKey;comment:【记录】编号" json:"log_id,omitempty"` //【记录】编号
- TraceID string `gorm:"index;comment:【系统】跟踪编号" json:"trace_id,omitempty"` //【系统】跟踪编号
- RequestTime time.Time `gorm:"index;comment:【请求】时间" json:"request_time,omitempty"` //【请求】时间
- RequestUri string `gorm:"comment:【请求】链接" json:"request_uri,omitempty"` //【请求】链接
- RequestUrl string `gorm:"comment:【请求】链接" json:"request_url,omitempty"` //【请求】链接
- RequestApi string `gorm:"index;comment:【请求】接口" json:"request_api,omitempty"` //【请求】接口
- RequestMethod string `gorm:"index;comment:【请求】方式" json:"request_method,omitempty"` //【请求】方式
- RequestParams string `gorm:"comment:【请求】参数" json:"request_params,omitempty"` //【请求】参数
- RequestHeader string `gorm:"comment:【请求】头部" json:"request_header,omitempty"` //【请求】头部
- RequestIp string `gorm:"default:0.0.0.0;index;comment:【请求】请求Ip" json:"request_ip,omitempty"` //【请求】请求Ip
- ResponseHeader string `gorm:"comment:【返回】头部" json:"response_header,omitempty"` //【返回】头部
- ResponseStatusCode int `gorm:"index;comment:【返回】状态码" json:"response_status_code,omitempty"` //【返回】状态码
- ResponseBody string `gorm:"comment:【返回】数据" json:"response_body,omitempty"` //【返回】数据
- ResponseContentLength int64 `gorm:"comment:【返回】大小" json:"response_content_length,omitempty"` //【返回】大小
- ResponseTime time.Time `gorm:"index;comment:【返回】时间" json:"response_time,omitempty"` //【返回】时间
- SystemHostName string `gorm:"index;comment:【系统】主机名" json:"system_host_name,omitempty"` //【系统】主机名
- SystemInsideIp string `gorm:"default:0.0.0.0;comment:【系统】内网ip" json:"system_inside_ip,omitempty"` //【系统】内网ip
- SystemOs string `gorm:"index;comment:【系统】系统类型" json:"system_os,omitempty"` //【系统】系统类型
- SystemArch string `gorm:"index;comment:【系统】系统架构" json:"system_arch,omitempty"` //【系统】系统架构
- GoVersion string `gorm:"comment:【程序】Go版本" json:"go_version,omitempty"` //【程序】Go版本
- SdkVersion string `gorm:"comment:【程序】Sdk版本" json:"sdk_version,omitempty"` //【程序】Sdk版本
+type apiGormLog struct {
+ LogID int64 `gorm:"primaryKey;comment:【记录】编号" json:"log_id,omitempty"` //【记录】编号
+ TraceID string `gorm:"index;comment:【系统】跟踪编号" json:"trace_id,omitempty"` //【系统】跟踪编号
+ RequestTime time.Time `gorm:"index;comment:【请求】时间" json:"request_time,omitempty"` //【请求】时间
+ RequestUri string `gorm:"comment:【请求】链接" json:"request_uri,omitempty"` //【请求】链接
+ RequestUrl string `gorm:"comment:【请求】链接" json:"request_url,omitempty"` //【请求】链接
+ RequestApi string `gorm:"index;comment:【请求】接口" json:"request_api,omitempty"` //【请求】接口
+ RequestMethod string `gorm:"index;comment:【请求】方式" json:"request_method,omitempty"` //【请求】方式
+ RequestParams string `gorm:"comment:【请求】参数" json:"request_params,omitempty"` //【请求】参数
+ RequestHeader string `gorm:"comment:【请求】头部" json:"request_header,omitempty"` //【请求】头部
+ RequestIp string `gorm:"default:0.0.0.0;index;comment:【请求】请求Ip" json:"request_ip,omitempty"` //【请求】请求Ip
+ ResponseHeader string `gorm:"comment:【返回】头部" json:"response_header,omitempty"` //【返回】头部
+ ResponseStatusCode int `gorm:"index;comment:【返回】状态码" json:"response_status_code,omitempty"` //【返回】状态码
+ ResponseBody string `gorm:"comment:【返回】数据" json:"response_body,omitempty"` //【返回】数据
+ ResponseTime time.Time `gorm:"index;comment:【返回】时间" json:"response_time,omitempty"` //【返回】时间
+ SystemHostName string `gorm:"index;comment:【系统】主机名" json:"system_host_name,omitempty"` //【系统】主机名
+ SystemInsideIp string `gorm:"default:0.0.0.0;comment:【系统】内网ip" json:"system_inside_ip,omitempty"` //【系统】内网ip
+ SystemOs string `gorm:"index;comment:【系统】系统类型" json:"system_os,omitempty"` //【系统】系统类型
+ SystemArch string `gorm:"index;comment:【系统】系统架构" json:"system_arch,omitempty"` //【系统】系统架构
+ GoVersion string `gorm:"comment:【程序】Go版本" json:"go_version,omitempty"` //【程序】Go版本
+ SdkVersion string `gorm:"comment:【程序】Sdk版本" json:"sdk_version,omitempty"` //【程序】Sdk版本
}
// 创建模型
@@ -42,14 +41,14 @@ func (ag *ApiGorm) gormAutoMigrate(ctx context.Context) {
return
}
- err := ag.gormClient.Table(ag.gormConfig.tableName).AutoMigrate(&apiPostgresqlLog{})
+ err := ag.gormClient.Table(ag.gormConfig.tableName).AutoMigrate(&apiGormLog{})
if err != nil {
log.Printf("创建模型:%s", err)
}
}
// 记录日志
-func (ag *ApiGorm) gormRecord(ctx context.Context, data apiPostgresqlLog) {
+func (ag *ApiGorm) gormRecord(ctx context.Context, data apiGormLog) {
if ag.gormConfig.stats == false {
return
}
@@ -76,18 +75,17 @@ func (ag *ApiGorm) gormRecord(ctx context.Context, data apiPostgresqlLog) {
// 中间件
func (ag *ApiGorm) gormMiddleware(ctx context.Context, request gorequest.Response) {
- data := apiPostgresqlLog{
- RequestTime: request.RequestTime, //【请求】时间
- RequestUri: request.RequestUri, //【请求】链接
- RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
- RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口
- RequestMethod: request.RequestMethod, //【请求】方式
- RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
- RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
- ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
- ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
- ResponseContentLength: request.ResponseContentLength, //【返回】大小
- ResponseTime: request.ResponseTime, //【返回】时间
+ data := apiGormLog{
+ RequestTime: request.RequestTime, //【请求】时间
+ RequestUri: request.RequestUri, //【请求】链接
+ RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
+ RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口
+ RequestMethod: request.RequestMethod, //【请求】方式
+ RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
+ RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
+ ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
+ ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
+ ResponseTime: request.ResponseTime, //【返回】时间
}
if !request.HeaderIsImg() {
if len(request.ResponseBody) > 0 {
@@ -100,18 +98,17 @@ func (ag *ApiGorm) gormMiddleware(ctx context.Context, request gorequest.Respons
// 中间件
func (ag *ApiGorm) gormMiddlewareXml(ctx context.Context, request gorequest.Response) {
- data := apiPostgresqlLog{
- RequestTime: request.RequestTime, //【请求】时间
- RequestUri: request.RequestUri, //【请求】链接
- RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
- RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口
- RequestMethod: request.RequestMethod, //【请求】方式
- RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
- RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
- ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
- ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
- ResponseContentLength: request.ResponseContentLength, //【返回】大小
- ResponseTime: request.ResponseTime, //【返回】时间
+ data := apiGormLog{
+ RequestTime: request.RequestTime, //【请求】时间
+ RequestUri: request.RequestUri, //【请求】链接
+ RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
+ RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口
+ RequestMethod: request.RequestMethod, //【请求】方式
+ RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
+ RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
+ ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
+ ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
+ ResponseTime: request.ResponseTime, //【返回】时间
}
if !request.HeaderIsImg() {
if len(request.ResponseBody) > 0 {
@@ -124,18 +121,17 @@ func (ag *ApiGorm) gormMiddlewareXml(ctx context.Context, request gorequest.Resp
// 中间件
func (ag *ApiGorm) gormMiddlewareCustom(ctx context.Context, api string, request gorequest.Response) {
- data := apiPostgresqlLog{
- RequestTime: request.RequestTime, //【请求】时间
- RequestUri: request.RequestUri, //【请求】链接
- RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
- RequestApi: api, //【请求】接口
- RequestMethod: request.RequestMethod, //【请求】方式
- RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
- RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
- ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
- ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
- ResponseContentLength: request.ResponseContentLength, //【返回】大小
- ResponseTime: request.ResponseTime, //【返回】时间
+ data := apiGormLog{
+ RequestTime: request.RequestTime, //【请求】时间
+ RequestUri: request.RequestUri, //【请求】链接
+ RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接
+ RequestApi: api, //【请求】接口
+ RequestMethod: request.RequestMethod, //【请求】方式
+ RequestParams: gojson.JsonEncodeNoError(request.RequestParams), //【请求】参数
+ RequestHeader: gojson.JsonEncodeNoError(request.RequestHeader), //【请求】头部
+ ResponseHeader: gojson.JsonEncodeNoError(request.ResponseHeader), //【返回】头部
+ ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
+ ResponseTime: request.ResponseTime, //【返回】时间
}
if !request.HeaderIsImg() {
if len(request.ResponseBody) > 0 {
diff --git a/gin_gorm.go b/gin_gorm.go
index 4870ad9..65f7652 100644
--- a/gin_gorm.go
+++ b/gin_gorm.go
@@ -8,7 +8,6 @@ import (
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"go.dtapp.net/gotime"
- "go.dtapp.net/gotrace_id"
"gorm.io/gorm"
"io/ioutil"
)
@@ -101,11 +100,11 @@ func (gg *GinGorm) Middleware() gin.HandlerFunc {
requestTime := gotime.Current().Time
// 获取全部内容
- paramsBody := gorequest.NewParams()
+ requestBody := gorequest.NewParams()
queryParams := ginCtx.Request.URL.Query() // 请求URL参数
for key, values := range queryParams {
for _, value := range values {
- paramsBody.Set(key, value)
+ requestBody.Set(key, value)
}
}
var dataMap map[string]interface{}
@@ -116,7 +115,7 @@ func (gg *GinGorm) Middleware() gin.HandlerFunc {
dataMap = gojson.ParseQueryString(string(rawData))
}
for key, value := range dataMap {
- paramsBody.Set(key, value)
+ requestBody.Set(key, value)
}
// 重新赋值
@@ -134,15 +133,12 @@ func (gg *GinGorm) Middleware() gin.HandlerFunc {
// 结束时间
endTime := gotime.Current().TimestampWithMillisecond()
+ responseTime := gotime.Current().Time
go func() {
- requestIp := gorequest.ClientIp(ginCtx.Request)
-
- var traceId = gotrace_id.GetGinTraceId(ginCtx)
-
// 记录
- gg.recordJson(ginCtx, traceId, requestTime, paramsBody, responseCode, responseBody, startTime, endTime, requestIp)
+ gg.recordJson(ginCtx, requestTime, requestBody, responseTime, responseCode, responseBody, endTime-startTime, gorequest.ClientIp(ginCtx.Request))
}()
}
diff --git a/gin_gorm_record.go b/gin_gorm_record.go
index 314c481..b259360 100644
--- a/gin_gorm_record.go
+++ b/gin_gorm_record.go
@@ -5,39 +5,35 @@ import (
"github.com/gin-gonic/gin"
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
- "go.dtapp.net/gotime"
+ "go.dtapp.net/gotrace_id"
"go.dtapp.net/gourl"
"log"
"time"
)
// 模型
-type ginPostgresqlLog struct {
- LogID int64 `gorm:"primaryKey;comment:【记录】编号" json:"log_id,omitempty"` //【记录】编号
- TraceID string `gorm:"index;comment:【系统】跟踪编号" json:"trace_id,omitempty"` //【系统】跟踪编号
- RequestTime time.Time `gorm:"index;comment:【请求】时间" json:"request_time,omitempty"` //【请求】时间
- RequestUri string `gorm:"comment:【请求】请求链接 域名+路径+参数" json:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数
- RequestURL string `gorm:"comment:【请求】请求链接 域名+路径" json:"request_url,omitempty"` //【请求】请求链接 域名+路径
- RequestApi string `gorm:"index;comment:【请求】请求接口 路径" json:"request_api,omitempty"` //【请求】请求接口 路径
- RequestMethod string `gorm:"index;comment:【请求】请求方式" json:"request_method,omitempty"` //【请求】请求方式
- RequestProto string `gorm:"comment:【请求】请求协议" json:"request_proto,omitempty"` //【请求】请求协议
- RequestUa string `gorm:"comment:【请求】请求UA" json:"request_ua,omitempty"` //【请求】请求UA
- RequestReferer string `gorm:"comment:【请求】请求referer" json:"request_referer,omitempty"` //【请求】请求referer
- RequestBody string `gorm:"comment:【请求】请求主体" json:"request_body,omitempty"` //【请求】请求主体
- RequestUrlQuery string `gorm:"comment:【请求】请求URL参数" json:"request_url_query,omitempty"` //【请求】请求URL参数
- RequestIP string `gorm:"index;comment:【请求】请求客户端IP" json:"request_ip,omitempty"` //【请求】请求客户端IP
- RequestHeader string `gorm:"comment:【请求】请求头" json:"request_header,omitempty"` //【请求】请求头
- ResponseTime time.Time `gorm:"index;comment:【返回】时间" json:"response_time,omitempty"` //【返回】时间
- ResponseCode int `gorm:"index;comment:【返回】状态码" json:"response_code,omitempty"` //【返回】状态码
- ResponseMsg string `gorm:"comment:【返回】描述" json:"response_msg,omitempty"` //【返回】描述
- ResponseData string `gorm:"comment:【返回】数据" json:"response_data,omitempty"` //【返回】数据
- CostTime int64 `gorm:"comment:【系统】花费时间" json:"cost_time,omitempty"` //【系统】花费时间
- SystemHostName string `gorm:"index;comment:【系统】主机名" json:"system_host_name,omitempty"` //【系统】主机名
- SystemInsideIP string `gorm:"comment:【系统】内网ip" json:"system_inside_ip,omitempty"` //【系统】内网ip
- SystemOs string `gorm:"index;comment:【系统】系统类型" json:"system_os,omitempty"` //【系统】系统类型
- SystemArch string `gorm:"index;comment:【系统】系统架构" json:"system_arch,omitempty"` //【系统】系统架构
- GoVersion string `gorm:"comment:【程序】Go版本" json:"go_version,omitempty"` //【程序】Go版本
- SdkVersion string `gorm:"comment:【程序】Sdk版本" json:"sdk_version,omitempty"` //【程序】Sdk版本
+type ginGormLog struct {
+ LogID int64 `gorm:"primaryKey;comment:【记录】编号" json:"log_id,omitempty"` //【记录】编号
+ TraceID string `gorm:"index;comment:【系统】跟踪编号" json:"trace_id,omitempty"` //【系统】跟踪编号
+ RequestTime time.Time `gorm:"index;comment:【请求】时间" json:"request_time,omitempty"` //【请求】时间
+ RequestUri string `gorm:"comment:【请求】链接 域名+路径+参数" json:"request_uri,omitempty"` //【请求】链接 域名+路径+参数
+ RequestURL string `gorm:"comment:【请求】链接 域名+路径" json:"request_url,omitempty"` //【请求】链接 域名+路径
+ RequestApi string `gorm:"index;comment:【请求】接口" json:"request_api,omitempty"` //【请求】接口
+ RequestMethod string `gorm:"index;comment:【请求】方式" json:"request_method,omitempty"` //【请求】方式
+ RequestProto string `gorm:"comment:【请求】协议" json:"request_proto,omitempty"` //【请求】协议
+ RequestBody string `gorm:"comment:【请求】参数" json:"request_body,omitempty"` //【请求】参数
+ RequestIP string `gorm:"index;comment:【请求】客户端IP" json:"request_ip,omitempty"` //【请求】客户端IP
+ RequestHeader string `gorm:"comment:【请求】头部" json:"request_header,omitempty"` //【请求】头部
+ ResponseTime time.Time `gorm:"index;comment:【返回】时间" json:"response_time,omitempty"` //【返回】时间
+ ResponseCode int `gorm:"index;comment:【返回】状态码" json:"response_code,omitempty"` //【返回】状态码
+ ResponseData string `gorm:"comment:【返回】数据" json:"response_data,omitempty"` //【返回】数据
+ CostTime int64 `gorm:"comment:【系统】花费时间" json:"cost_time,omitempty"` //【系统】花费时间
+ SystemHostName string `gorm:"index;comment:【系统】主机名" json:"system_host_name,omitempty"` //【系统】主机名
+ SystemInsideIP string `gorm:"comment:【系统】内网ip" json:"system_inside_ip,omitempty"` //【系统】内网ip
+ SystemOs string `gorm:"index;comment:【系统】系统类型" json:"system_os,omitempty"` //【系统】系统类型
+ SystemArch string `gorm:"index;comment:【系统】系统架构" json:"system_arch,omitempty"` //【系统】系统架构
+ GoVersion string `gorm:"comment:【程序】Go版本" json:"go_version,omitempty"` //【程序】Go版本
+ SdkVersion string `gorm:"comment:【程序】Sdk版本" json:"sdk_version,omitempty"` //【程序】Sdk版本
}
// 创建模型
@@ -46,14 +42,14 @@ func (gg *GinGorm) gormAutoMigrate(ctx context.Context) {
return
}
- err := gg.gormClient.Table(gg.gormConfig.tableName).AutoMigrate(&ginPostgresqlLog{})
+ err := gg.gormClient.Table(gg.gormConfig.tableName).AutoMigrate(&ginGormLog{})
if err != nil {
log.Printf("创建模型:%s\n", err)
}
}
// gormRecord 记录日志
-func (gg *GinGorm) gormRecord(data ginPostgresqlLog) {
+func (gg *GinGorm) gormRecord(data ginGormLog) {
if gg.gormConfig.stats == false {
return
}
@@ -72,30 +68,27 @@ func (gg *GinGorm) gormRecord(data ginPostgresqlLog) {
}
}
-func (gg *GinGorm) recordJson(ginCtx *gin.Context, traceId string, requestTime time.Time, requestBody gorequest.Params, responseCode int, responseBody string, startTime, endTime int64, requestIp string) {
+func (gg *GinGorm) recordJson(ginCtx *gin.Context, requestTime time.Time, requestBody gorequest.Params, responseTime time.Time, responseCode int, responseBody string, costTime int64, requestIp string) {
- data := ginPostgresqlLog{
- TraceID: traceId, //【系统】跟踪编号
- RequestTime: requestTime, //【请求】时间
- RequestURL: ginCtx.Request.RequestURI, //【请求】请求链接
- RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口
- RequestMethod: ginCtx.Request.Method, //【请求】请求方式
- RequestProto: ginCtx.Request.Proto, //【请求】请求协议
- RequestUa: ginCtx.Request.UserAgent(), //【请求】请求UA
- RequestReferer: ginCtx.Request.Referer(), //【请求】请求referer
- RequestBody: gojson.JsonEncodeNoError(requestBody), //【请求】请求主体
- RequestUrlQuery: gojson.JsonEncodeNoError(ginCtx.Request.URL.Query()), //【请求】请求URL参数
- RequestIP: requestIp, //【请求】请求客户端IP
- RequestHeader: gojson.JsonEncodeNoError(ginCtx.Request.Header), //【请求】请求头
- ResponseTime: gotime.Current().Time, //【返回】时间
- ResponseCode: responseCode, //【返回】状态码
- ResponseData: responseBody, //【返回】数据
- CostTime: endTime - startTime, //【系统】花费时间
+ data := ginGormLog{
+ TraceID: gotrace_id.GetGinTraceId(ginCtx), //【系统】跟踪编号
+ RequestTime: requestTime, //【请求】时间
+ RequestURL: ginCtx.Request.RequestURI, //【请求】链接
+ RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】接口
+ RequestMethod: ginCtx.Request.Method, //【请求】方式
+ RequestProto: ginCtx.Request.Proto, //【请求】协议
+ RequestBody: gojson.JsonEncodeNoError(requestBody), //【请求】参数
+ RequestIP: requestIp, //【请求】客户端IP
+ RequestHeader: gojson.JsonEncodeNoError(ginCtx.Request.Header), //【请求】头部
+ ResponseTime: responseTime, //【返回】时间
+ ResponseCode: responseCode, //【返回】状态码
+ ResponseData: responseBody, //【返回】数据
+ CostTime: costTime, //【系统】花费时间
}
if ginCtx.Request.TLS == nil {
- data.RequestUri = "http://" + ginCtx.Request.Host + ginCtx.Request.RequestURI //【请求】请求链接
+ data.RequestUri = "http://" + ginCtx.Request.Host + ginCtx.Request.RequestURI //【请求】链接
} else {
- data.RequestUri = "https://" + ginCtx.Request.Host + ginCtx.Request.RequestURI //【请求】请求链接
+ data.RequestUri = "https://" + ginCtx.Request.Host + ginCtx.Request.RequestURI //【请求】链接
}
gg.gormRecord(data)
diff --git a/gin_slog.go b/gin_slog.go
index 94a3438..bcfc855 100644
--- a/gin_slog.go
+++ b/gin_slog.go
@@ -7,7 +7,6 @@ import (
"go.dtapp.net/gojson"
"go.dtapp.net/gorequest"
"go.dtapp.net/gotime"
- "go.dtapp.net/gotrace_id"
"io/ioutil"
)
@@ -57,11 +56,11 @@ func (gl *GinSLog) Middleware() gin.HandlerFunc {
requestTime := gotime.Current().Time
// 获取全部内容
- paramsBody := gorequest.NewParams()
+ requestAllContent := gorequest.NewParams()
queryParams := ginCtx.Request.URL.Query() // 请求URL参数
for key, values := range queryParams {
for _, value := range values {
- paramsBody.Set(key, value)
+ requestAllContent.Set(key, value)
}
}
var dataMap map[string]interface{}
@@ -72,7 +71,7 @@ func (gl *GinSLog) Middleware() gin.HandlerFunc {
dataMap = gojson.ParseQueryString(string(rawData))
}
for key, value := range dataMap {
- paramsBody.Set(key, value)
+ requestAllContent.Set(key, value)
}
// 重新赋值
@@ -90,15 +89,12 @@ func (gl *GinSLog) Middleware() gin.HandlerFunc {
// 结束时间
endTime := gotime.Current().TimestampWithMillisecond()
+ responseTime := gotime.Current().Time
go func() {
- requestIp := gorequest.ClientIp(ginCtx.Request)
-
- var traceId = gotrace_id.GetGinTraceId(ginCtx)
-
// 记录
- gl.recordJson(ginCtx, traceId, requestTime, paramsBody, responseCode, responseBody, startTime, endTime, requestIp)
+ gl.recordJson(ginCtx, requestTime, requestAllContent, responseTime, responseCode, responseBody, endTime-startTime, gorequest.ClientIp(ginCtx.Request))
}()
}
diff --git a/gin_slog_record.go b/gin_slog_record.go
index 778310f..6c6d74b 100644
--- a/gin_slog_record.go
+++ b/gin_slog_record.go
@@ -3,32 +3,27 @@ package golog
import (
"github.com/gin-gonic/gin"
"go.dtapp.net/gorequest"
- "go.dtapp.net/gotime"
+ "go.dtapp.net/gotrace_id"
"go.dtapp.net/gourl"
"time"
)
// 结构体
type ginSLog struct {
- TraceID string `json:"trace_id,omitempty"` //【系统】跟踪编号
- RequestTime time.Time `json:"request_time,omitempty"` //【请求】时间
- RequestUri string `json:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数
- RequestUrl string `json:"request_url,omitempty"` //【请求】请求链接 域名+路径
- RequestApi string `json:"request_api,omitempty"` //【请求】请求接口 路径
- RequestMethod string `json:"request_method,omitempty"` //【请求】请求方式
- RequestProto string `json:"request_proto,omitempty"` //【请求】请求协议
- RequestUa string `json:"request_ua,omitempty"` //【请求】请求UA
- RequestReferer string `json:"request_referer,omitempty"` //【请求】请求referer
- RequestBody string `json:"request_body,omitempty"` //【请求】请求主体
- RequestUrlQuery map[string][]string `json:"request_url_query,omitempty"` //【请求】请求URL参数
- RequestIP string `json:"request_ip,omitempty"` //【请求】请求客户端IP
- RequestHeader map[string][]string `json:"request_header,omitempty"` //【请求】请求头
- RequestAllContent map[string]interface{} `json:"request_all_content,omitempty"` // 【请求】请求全部内容
- ResponseTime time.Time `json:"response_time,omitempty"` //【返回】时间
- ResponseCode int `json:"response_code,omitempty"` //【返回】状态码
- ResponseMsg string `json:"response_msg,omitempty"` //【返回】描述
- ResponseData string `json:"response_data,omitempty"` //【返回】数据
- CostTime int64 `json:"cost_time,omitempty"` //【系统】花费时间
+ TraceID string `json:"trace_id,omitempty"` //【系统】跟踪编号
+ RequestTime time.Time `json:"request_time,omitempty"` //【请求】时间
+ RequestUri string `json:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数
+ RequestUrl string `json:"request_url,omitempty"` //【请求】请求链接 域名+路径
+ RequestApi string `json:"request_api,omitempty"` //【请求】请求接口 路径
+ RequestMethod string `json:"request_method,omitempty"` //【请求】请求方式
+ RequestProto string `json:"request_proto,omitempty"` //【请求】请求协议
+ RequestBody map[string]interface{} `json:"request_body,omitempty"` //【请求】请求参数
+ RequestIP string `json:"request_ip,omitempty"` //【请求】请求客户端IP
+ RequestHeader map[string][]string `json:"request_header,omitempty"` //【请求】请求头
+ ResponseTime time.Time `json:"response_time,omitempty"` //【返回】时间
+ ResponseCode int `json:"response_code,omitempty"` //【返回】状态码
+ ResponseData string `json:"response_data,omitempty"` //【返回】数据
+ CostTime int64 `json:"cost_time,omitempty"` //【系统】花费时间
}
// record 记录日志
@@ -40,39 +35,31 @@ func (gl *GinSLog) record(msg string, data ginSLog) {
"request_api", data.RequestApi,
"request_method", data.RequestMethod,
"request_proto", data.RequestProto,
- "request_ua", data.RequestUa,
- "request_referer", data.RequestReferer,
"request_body", data.RequestBody,
- "request_url_query", data.RequestUrlQuery,
"request_ip", data.RequestIP,
"request_header", data.RequestHeader,
- "request_all_content", data.RequestAllContent,
"response_time", data.ResponseTime,
"response_code", data.ResponseCode,
- "response_msg", data.ResponseMsg,
"response_data", data.ResponseData,
"cost_time", data.CostTime,
)
}
-func (gl *GinSLog) recordJson(ginCtx *gin.Context, traceId string, requestTime time.Time, paramsBody gorequest.Params, responseCode int, responseBody string, startTime, endTime int64, requestIp string) {
+func (gl *GinSLog) recordJson(ginCtx *gin.Context, requestTime time.Time, request_body gorequest.Params, responseTime time.Time, responseCode int, responseBody string, costTime int64, requestIp string) {
data := ginSLog{
- TraceID: traceId, //【系统】跟踪编号
- RequestTime: requestTime, //【请求】时间
- RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接
- RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口
- RequestMethod: ginCtx.Request.Method, //【请求】请求方式
- RequestProto: ginCtx.Request.Proto, //【请求】请求协议
- RequestUa: ginCtx.Request.UserAgent(), //【请求】请求UA
- RequestReferer: ginCtx.Request.Referer(), //【请求】请求referer
- RequestUrlQuery: ginCtx.Request.URL.Query(), //【请求】请求URL参数
- RequestIP: requestIp, //【请求】请求客户端IP
- RequestHeader: ginCtx.Request.Header, //【请求】请求头
- RequestAllContent: paramsBody, //【请求】请求全部内容
- ResponseTime: gotime.Current().Time, //【返回】时间
- ResponseCode: responseCode, //【返回】状态码
- ResponseData: responseBody, //【返回】数据
- CostTime: endTime - startTime, //【系统】花费时间
+ TraceID: gotrace_id.GetGinTraceId(ginCtx), //【系统】跟踪编号
+ RequestTime: requestTime, //【请求】时间
+ RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接
+ RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口
+ RequestMethod: ginCtx.Request.Method, //【请求】请求方式
+ RequestProto: ginCtx.Request.Proto, //【请求】请求协议
+ RequestBody: request_body, //【请求】请求参数
+ RequestIP: requestIp, //【请求】请求客户端IP
+ RequestHeader: ginCtx.Request.Header, //【请求】请求头
+ ResponseTime: responseTime, //【返回】时间
+ ResponseCode: responseCode, //【返回】状态码
+ ResponseData: responseBody, //【返回】数据
+ CostTime: costTime, //【系统】花费时间
}
if ginCtx.Request.TLS == nil {
data.RequestUri = "http://" + ginCtx.Request.Host + ginCtx.Request.RequestURI //【请求】请求链接
diff --git a/go.mod b/go.mod
index 63ca1cc..f7a53d9 100644
--- a/go.mod
+++ b/go.mod
@@ -32,13 +32,12 @@ require (
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.6 // indirect
- github.com/kr/pretty v0.3.0 // indirect
+ github.com/kr/text v0.2.0 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
- github.com/rogpeppe/go-internal v1.12.0 // indirect
github.com/tklauser/go-sysconf v0.3.13 // indirect
github.com/tklauser/numcpus v0.7.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
@@ -52,7 +51,6 @@ require (
golang.org/x/sys v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
- gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index a9c4c8c..0277049 100644
--- a/go.sum
+++ b/go.sum
@@ -53,12 +53,6 @@ github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
@@ -72,13 +66,12 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM=
github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI=
github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -134,10 +127,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
diff --git a/version.go b/version.go
index eefc4fc..fef8b69 100644
--- a/version.go
+++ b/version.go
@@ -1,5 +1,5 @@
package golog
const (
- Version = "1.0.108"
+ Version = "1.0.109"
)