基础日志数据结构
This commit is contained in:
		
							
								
								
									
										57
									
								
								define.go
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								define.go
									
									
									
									
									
								
							| @ -18,7 +18,17 @@ import ( | ||||
| 	"go.uber.org/zap/zapcore" | ||||
| ) | ||||
|  | ||||
| var wsLoggerConnect storage.IConnection // ws 日志连接管理实例 | ||||
| // FillLogDataFunc 定义填充数据的方法 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 21:33 2024/7/24 | ||||
| type FillLogDataFunc func(data *LogData) | ||||
|  | ||||
| var ( | ||||
| 	wsLoggerConnect storage.IConnection // ws 日志连接管理实例 | ||||
| 	fillLogDataFunc FillLogDataFunc     // 填充数据方法 | ||||
| ) | ||||
|  | ||||
| // SetWsLoggConnect 设置ws connect | ||||
| // | ||||
| @ -38,6 +48,51 @@ func GetWsLoggConnect(connect storage.IConnection) { | ||||
| 	wsLoggerConnect = connect | ||||
| } | ||||
|  | ||||
| // SetFillLogDataFunc ... | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 21:34 2024/7/24 | ||||
| func SetFillLogDataFunc(fillFunc FillLogDataFunc) { | ||||
| 	fillLogDataFunc = fillFunc | ||||
| } | ||||
|  | ||||
| // GetFillLogDataFunc 获取填充数据的方法 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 21:36 2024/7/24 | ||||
| func GetFillLogDataFunc() FillLogDataFunc { | ||||
| 	if nil == fillLogDataFunc { | ||||
| 		return func(data *LogData) { | ||||
|  | ||||
| 		} | ||||
| 	} | ||||
| 	return fillLogDataFunc | ||||
| } | ||||
|  | ||||
| // LogData 记录日志数据 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 16:07 2024/7/23 | ||||
| type LogData struct { | ||||
| 	Env            string         `json:"env"`             // 运行环境 | ||||
| 	Uri            string         `json:"uri"`             // 请求的接口 | ||||
| 	TraceID        string         `json:"trace_id"`        // 请求的trace_id | ||||
| 	UserID         string         `json:"user_id"`         // 用户ID | ||||
| 	UserRoleID     string         `json:"user_role_id"`    // 用户角色 | ||||
| 	OperateMode    string         `json:"operate_mode"`    // 操作模式 | ||||
| 	LogType        string         `json:"log_type"`        // 日志类型 | ||||
| 	CodeVersion    string         `json:"code_version"`    // 代码版本 | ||||
| 	ServiceVersion string         `json:"service_version"` // 服务本身的版本 | ||||
| 	ClientIp       string         `json:"client_ip"`       // 客户端IP | ||||
| 	ServerIp       string         `json:"server_ip"`       // 服务器IP | ||||
| 	Hostname       string         `json:"hostname"`        // 服务器主机名 | ||||
| 	Code           string         `json:"code"`            // 日志状态码 | ||||
| 	Data           map[string]any `json:"data"`            // 扩展记录的数据, 会展开一层进行记录 | ||||
| } | ||||
|  | ||||
| // InputLogConfig 输入的日志配置 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
|  | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -6,7 +6,7 @@ toolchain go1.22.5 | ||||
|  | ||||
| require ( | ||||
| 	git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240723085016-ee0510753552 | ||||
| 	git.zhangdeman.cn/zhangdeman/gin v0.0.0-20230826052425-e7c13b6089ca | ||||
| 	git.zhangdeman.cn/zhangdeman/gin v0.0.0-20240723135300-86cecc4eb707 | ||||
| 	git.zhangdeman.cn/zhangdeman/websocket v0.0.0-20240723075210-85feada512b2 | ||||
| 	github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
|  | ||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							| @ -8,6 +8,8 @@ git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211 h1:I/wOs | ||||
| git.zhangdeman.cn/zhangdeman/easymap v0.0.0-20240311030808-e2a2e6a3c211/go.mod h1:SrtvrQRdzt+8KfYzvosH++gWxo2ShPTzR1m3VQ6uX7U= | ||||
| git.zhangdeman.cn/zhangdeman/gin v0.0.0-20230826052425-e7c13b6089ca h1:dih0pGEf2snCN7QImFSV62i7jNDKm/kOy/nC4pN9rQI= | ||||
| git.zhangdeman.cn/zhangdeman/gin v0.0.0-20230826052425-e7c13b6089ca/go.mod h1:0qCJAZU+tDC11ZDe2rh8gOfYQhWKlvutNAbs5i4eGfo= | ||||
| git.zhangdeman.cn/zhangdeman/gin v0.0.0-20240723135300-86cecc4eb707 h1:Kp56iXcOBz9a6OdqEHWDNOzSH/t7vAtECvvbiHa4r0w= | ||||
| git.zhangdeman.cn/zhangdeman/gin v0.0.0-20240723135300-86cecc4eb707/go.mod h1:L9w2KH8amtv0+OG5G5etEEahmxmNqdDlGML438b/jXQ= | ||||
| git.zhangdeman.cn/zhangdeman/network v0.0.0-20230925112156-f0eb86dd2442 h1:1eBf0C0gdpBQOqjTK3UCw/mwzQ/SCodx3iTQtidx9eE= | ||||
| git.zhangdeman.cn/zhangdeman/network v0.0.0-20230925112156-f0eb86dd2442/go.mod h1:hFYWiS+ExIuJJJdwHWy4P3pVHbd/0mpv53qlbhDNdTI= | ||||
| git.zhangdeman.cn/zhangdeman/op_type v0.0.0-20240122104027-4928421213c0 h1:gUDlQMuJ4xNfP2Abl1Msmpa3fASLWYkNlqDFF/6GN0Y= | ||||
|  | ||||
							
								
								
									
										69
									
								
								util.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								util.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| // Package logger ... | ||||
| // | ||||
| // Description : logger ... | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 2024-07-24 21:14 | ||||
| package logger | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
|  | ||||
| 	ginRequest "git.zhangdeman.cn/zhangdeman/gin/request" | ||||
| 	"git.zhangdeman.cn/zhangdeman/network/util" | ||||
| 	"git.zhangdeman.cn/zhangdeman/serialize" | ||||
| 	"github.com/gin-gonic/gin" | ||||
| 	"go.uber.org/zap" | ||||
| ) | ||||
|  | ||||
| // NewLogData ... | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 16:21 2024/7/23 | ||||
| func NewLogData(ctx *gin.Context, logType string, code string, logData map[string]any) *LogData { | ||||
| 	if logData == nil { | ||||
| 		logData = make(map[string]any) | ||||
| 	} | ||||
| 	hostname, _ := os.Hostname() | ||||
| 	commonLogData := &LogData{ | ||||
| 		Uri:            ginRequest.WrapperHandle.GetUri(ctx, ""), | ||||
| 		TraceID:        "", | ||||
| 		UserID:         "", | ||||
| 		UserRoleID:     "", | ||||
| 		OperateMode:    "", | ||||
| 		LogType:        logType, | ||||
| 		CodeVersion:    "", | ||||
| 		ServiceVersion: "", | ||||
| 		ClientIp:       ginRequest.WrapperHandle.GetClientIp(ctx, "0.0.0.0"), | ||||
| 		ServerIp:       util.IP.GetHostIP(), | ||||
| 		Hostname:       hostname, | ||||
| 		Code:           code, | ||||
| 		Data:           logData, | ||||
| 	} | ||||
| 	GetFillLogDataFunc()(commonLogData) | ||||
| 	return commonLogData | ||||
| } | ||||
|  | ||||
| // ZapLogDataList 记录的日志数据字段列表 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 17:33 2024/7/23 | ||||
| func ZapLogDataList(ctx *gin.Context, logData *LogData) []zap.Field { | ||||
| 	logDataList := make([]zap.Field, 0) | ||||
| 	if logData == nil { | ||||
| 		return logDataList | ||||
| 	} | ||||
| 	var mapData map[string]any | ||||
| 	_ = serialize.JSON.Transition(logData, &mapData) | ||||
| 	delete(mapData, "data") // data字段单独展开 | ||||
| 	for k, v := range mapData { | ||||
| 		logDataList = append(logDataList, zap.Any(k, v)) | ||||
| 	} | ||||
| 	for k, v := range logData.Data { // 展开一层数据属性 | ||||
| 		logDataList = append(logDataList, zap.Any("data_"+k, v)) | ||||
| 	} | ||||
| 	return logDataList | ||||
| } | ||||
		Reference in New Issue
	
	Block a user