Files
logger/util.go

75 lines
1.9 KiB
Go

// Package logger ...
//
// Description : logger ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-07-24 21:14
package logger
import (
"context"
"os"
"git.zhangdeman.cn/zhangdeman/consts"
"git.zhangdeman.cn/zhangdeman/network/util"
"git.zhangdeman.cn/zhangdeman/serialize"
"git.zhangdeman.cn/zhangdeman/wrapper"
"go.uber.org/zap"
)
func getStrVal(ctx context.Context, key string) string {
val := ctx.Value(key)
if nil == val {
return ""
}
return wrapper.AnyDataType(val).ToString().Value()
}
// NewLogData ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:21 2024/7/23
func NewLogData(ctx context.Context, logType string, code string, logData map[string]any) *LogData {
hostname, _ := os.Hostname()
if nil == ctx {
ctx = context.Background()
}
commonLogData := &LogData{
Env: getStrVal(ctx, consts.GinEnvField),
Uri: getStrVal(ctx, consts.GinRequestURIField),
TraceID: getStrVal(ctx, consts.GinTraceIDField),
UserID: getStrVal(ctx, consts.GinUserIDField),
UserRoleID: getStrVal(ctx, consts.GinUserRoleIDField),
OperateMode: getStrVal(ctx, consts.GinOperateModeField),
LogType: logType,
CodeVersion: getStrVal(ctx, consts.GinCodeVersionField),
ServiceVersion: getStrVal(ctx, consts.GinServiceVersionField),
ClientIp: getStrVal(ctx, consts.GinClientIpField),
ServerIp: util.IP.GetHostIP(),
Hostname: hostname,
Code: code,
Data: logData,
}
return commonLogData
}
// ZapLogDataList 记录的日志数据字段列表
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:33 2024/7/23
func ZapLogDataList(logData *LogData) []zap.Field {
logDataList := make([]zap.Field, 0)
if logData == nil {
return logDataList
}
var mapData map[string]any
_ = serialize.JSON.Transition(logData, &mapData)
for k, v := range mapData {
logDataList = append(logDataList, zap.Any(k, v))
}
return logDataList
}