145 lines
3.4 KiB
Go
145 lines
3.4 KiB
Go
// Package log ...
|
|
//
|
|
// Description : httpclient ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2025-03-31 18:02
|
|
package log
|
|
|
|
import (
|
|
"context"
|
|
"git.zhangdeman.cn/zhangdeman/consts"
|
|
"git.zhangdeman.cn/zhangdeman/network/httpclient/define"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var (
|
|
logger *zap.Logger
|
|
)
|
|
|
|
// Set 设置日志实例
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 18:02 2025/3/31
|
|
func Set(l *zap.Logger) {
|
|
logger = l
|
|
}
|
|
|
|
// Get 获取日志实例
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 18:19 2025/3/31
|
|
func Get() *zap.Logger {
|
|
if nil == logger {
|
|
// 返回日志空实现
|
|
return zap.NewNop()
|
|
}
|
|
return logger
|
|
}
|
|
|
|
var buildHttpLogDataFunc BuildHttpLogDataFunc
|
|
|
|
// BuildHttpLogDataFunc 构建http请求日志数据的方法
|
|
type BuildHttpLogDataFunc func(ctx context.Context, isResponseLog bool, businessData map[string]any, reqCfg *define.Request, response *define.Response) []zap.Field
|
|
|
|
func SetBuildDataFunc(f BuildHttpLogDataFunc) {
|
|
buildHttpLogDataFunc = f
|
|
}
|
|
|
|
func GetBuildDataFunc() BuildHttpLogDataFunc {
|
|
return buildHttpLogDataFunc
|
|
}
|
|
|
|
// Record 日志记录
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 18:07 2025/3/31
|
|
func Record(ctx context.Context, logInstance *zap.Logger, level consts.LogLevel, msg string, reqCfg *define.Request, response *define.Response) {
|
|
if nil == logInstance {
|
|
// 未设置日志实例
|
|
return
|
|
}
|
|
buildDataFunc := GetBuildDataFunc()
|
|
if nil == buildDataFunc {
|
|
// 未设置构建日志数据的方法
|
|
return
|
|
}
|
|
fields := buildDataFunc(ctx, true, nil, reqCfg, response)
|
|
switch level {
|
|
case consts.LogLevelDebug:
|
|
logInstance.Debug(msg, fields...)
|
|
case consts.LogLevelInfo:
|
|
logInstance.Info(msg, fields...)
|
|
case consts.LogLevelWarn:
|
|
logInstance.Warn(msg, fields...)
|
|
case consts.LogLevelError:
|
|
logInstance.Error(msg, fields...)
|
|
case consts.LogLevelPanic:
|
|
logInstance.Panic(msg, fields...)
|
|
}
|
|
}
|
|
|
|
// RecordDebug 日志记录
|
|
func RecordDebug(msg string, businessData map[string]any, reqCfg *define.Request) {
|
|
if nil == reqCfg.Logger {
|
|
// 未设置日志实例
|
|
return
|
|
}
|
|
buildDataFunc := GetBuildDataFunc()
|
|
if nil == buildDataFunc {
|
|
// 未设置构建日志数据的方法
|
|
return
|
|
}
|
|
fields := buildDataFunc(reqCfg.Ctx, false, businessData, reqCfg, nil)
|
|
reqCfg.Logger.Debug(msg, fields...)
|
|
}
|
|
|
|
// RecordInfo ...
|
|
func RecordInfo(msg string, businessData map[string]any, reqCfg *define.Request) {
|
|
if nil == reqCfg.Logger {
|
|
// 未设置日志实例
|
|
return
|
|
}
|
|
buildDataFunc := GetBuildDataFunc()
|
|
if nil == buildDataFunc {
|
|
// 未设置构建日志数据的方法
|
|
return
|
|
}
|
|
fields := buildDataFunc(reqCfg.Ctx, false, businessData, reqCfg, nil)
|
|
reqCfg.Logger.Info(msg, fields...)
|
|
}
|
|
|
|
// RecordWarn ...
|
|
func RecordWarn(msg string, businessData map[string]any, reqCfg *define.Request) {
|
|
if nil == reqCfg.Logger {
|
|
// 未设置日志实例
|
|
return
|
|
}
|
|
buildDataFunc := GetBuildDataFunc()
|
|
if nil == buildDataFunc {
|
|
// 未设置构建日志数据的方法
|
|
return
|
|
}
|
|
fields := buildDataFunc(reqCfg.Ctx, false, businessData, reqCfg, nil)
|
|
reqCfg.Logger.Warn(msg, fields...)
|
|
}
|
|
|
|
// RecordError ...
|
|
func RecordError(msg string, businessData map[string]any, reqCfg *define.Request) {
|
|
if nil == reqCfg.Logger {
|
|
// 未设置日志实例
|
|
return
|
|
}
|
|
buildDataFunc := GetBuildDataFunc()
|
|
if nil == buildDataFunc {
|
|
// 未设置构建日志数据的方法
|
|
return
|
|
}
|
|
fields := buildDataFunc(reqCfg.Ctx, false, businessData, reqCfg, nil)
|
|
reqCfg.Logger.Error(msg, fields...)
|
|
}
|