From fe311de89fcc352eb3d02263277ff4eb8a8ba336 Mon Sep 17 00:00:00 2001 From: yuguojian <18126816215> Date: Wed, 9 Jul 2025 18:09:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=92=8C=E7=BB=93=E6=9E=9C=E8=BD=AC=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- log/log.go | 89 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 28 deletions(-) diff --git a/log/log.go b/log/log.go index ac57e4d..b587d2f 100644 --- a/log/log.go +++ b/log/log.go @@ -6,6 +6,7 @@ import ( "github.com/dromara/carbon/v2" "github.com/gogf/gf/v2/frame/g" "go.uber.org/zap" + "reflect" ) type LogType = string @@ -28,18 +29,6 @@ const ( LogTypeJJT LogType = "jjt" // 交易所 ) -type LogInfo struct { - LogType LogType `json:"log_type"` // 日志类型,按被操作对象划分 - Operator *Operator `json:"operator,omitempty"` // 操作人,系统操作不用填写操作人,写日志类型就可以 - ObjectorID int `json:"objector_id,omitempty"` // 被操作对象ID,如果是gps,短信等服务则为0 - Title string `json:"title"` // 必填,标题,做什么事情 - Param interface{} `json:"param,omitempty"` // 参数,请求参数,传指针 - Result interface{} `json:"result,omitempty"` // 结果,返回值,传指针,如果是报错,传err - ErrStr string `json:"err_str,omitempty"` // 错误信息,不用传入,自动记录 - At string `json:"at"` // 记录时间,不用传入,自动记录 - Timestamp int64 `json:"timestamp"` // 时间戳,不用传入,自动记录 -} - type OperatorType = string const ( @@ -53,72 +42,104 @@ type Operator struct { OperatorType OperatorType } +type LogInfo struct { + LogType LogType `json:"log_type"` // 日志类型,按被操作对象划分 + Operator *Operator `json:"operator,omitempty"` // 操作人,系统操作不用填写操作人,写日志类型就可以 + ObjectorID int `json:"objector_id,omitempty"` // 被操作对象ID,如果是gps,短信等服务则为0 + Title string `json:"title"` // 必填,标题,做什么事情 + Param interface{} `json:"param,omitempty"` // 参数,请求参数,传指针 + Result interface{} `json:"result,omitempty"` // 结果,返回值,传指针,如果是报错,传err + ErrStr string `json:"err_str,omitempty"` // 错误信息,不用传入,自动记录 + At string `json:"at"` // 记录时间,不用传入,自动记录 + Timestamp int64 `json:"timestamp"` // 时间戳,不用传入,自动记录 +} + +type param struct { + Type string `json:"type"` + Value interface{} `json:"value"` +} + +type result struct { + Type string `json:"type"` + Value interface{} `json:"value"` +} + func ZapDebug(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Debug("", zap.Any("log", log)) } func ZapInfo(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Info("", zap.Any("log", log)) } func ZapWarn(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Warn("", zap.Any("log", log)) } func ZapError(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Error("", zap.Any("log", log)) } func ZapPanic(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Panic("", zap.Any("log", log)) } func ZapFatal(logger *zap.Logger, log *LogInfo) { - handleLog(log) + HandleLog(log) logger.Fatal("", zap.Any("log", log)) } -func handleLog(log *LogInfo) { +func HandleLog(log *LogInfo) { log.At = carbon.Now().ToDateTimeString() log.Timestamp = carbon.Now().Timestamp() - if _, ok := log.Result.(error); ok { - log.ErrStr = fmt.Sprintf("%+v", log.Result) - log.Result = nil + // 处理 Param + // 处理 Param + if log.Param != nil { + log.Param = processValue(log.Param) + } + // 处理 Result + if log.Result != nil { + if _, ok := log.Result.(error); ok { + log.ErrStr = fmt.Sprintf("%+v", log.Result) + log.Result = nil + } else { + log.Result = processValue(log.Result) + } } } func GFInfo(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Info(ctx, log) } func GFWarning(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Warning(ctx, log) } func GFError(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Error(ctx, log) } func GFDebug(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Debug(ctx, log) } func GFPanic(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Panic(ctx, log) } func GFFatal(ctx context.Context, log *LogInfo) { - handleLog(log) + HandleLog(log) g.Log().Fatal(ctx, log) } @@ -141,3 +162,15 @@ func (l *LogInfo) ZapCommonHandelResult(logger *zap.Logger, result interface{}, ZapInfo(logger, l) } } + +func processValue(value interface{}) interface{} { + kind := reflect.TypeOf(value).Kind() + switch kind { + case reflect.Map, reflect.Slice, reflect.Array, reflect.Struct: + // 如果是复杂类型,保持原样 + return value + default: + // 对于其他类型,转换为字符串 + return param{Type: kind.String(), Value: fmt.Sprintf("%v", value)} + } +} From 0537361ddfba846cfbbca904482ec6ca36924115 Mon Sep 17 00:00:00 2001 From: yuguojian <18126816215> Date: Wed, 9 Jul 2025 18:10:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=92=8C=E7=BB=93=E6=9E=9C=E8=BD=AC=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 27 +++++++++++++++++++++++++-- go.sum | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 286d370..3e8aea1 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,31 @@ go 1.18.0 require ( github.com/dromara/carbon/v2 v2.6.4 - go.uber.org/zap v1.27.0 github.com/gogf/gf/v2 v2.7.2 + go.uber.org/zap v1.27.0 ) -require go.uber.org/multierr v1.10.0 // indirect +require ( + github.com/BurntSushi/toml v1.3.2 // indirect + github.com/clbanning/mxj/v2 v2.7.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/grokify/html-strip-tags-go v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + go.opentelemetry.io/otel v1.14.0 // indirect + go.opentelemetry.io/otel/sdk v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.uber.org/multierr v1.10.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/text v0.14.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum index dbb1a47..5cd45e6 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,61 @@ +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= +github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/dromara/carbon/v2 v2.6.4 h1:cpIansyiEIEed3OlEIqo1IXj86qu0x6pf/E2keL2wYo= github.com/dromara/carbon/v2 v2.6.4/go.mod h1:Baj3A1uBBctJmpZWJd6/+WWnmIuY2pobR6IOpB6xigc= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/gogf/gf/v2 v2.7.2 h1:uZDfyblasI12lZUtFd1mfxsIr8b14cd/F88DJUTCSDM= github.com/gogf/gf/v2 v2.7.2/go.mod h1:EBXneAg/wes86rfeh68XC0a2JBNQylmT7Sp6/8Axk88= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4= +github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=