完成数据过主干逻辑,细节健壮性有待继续完善 #4
20
tool/gabs.go
20
tool/gabs.go
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/tidwall/gjson"
|
"github.com/tidwall/gjson"
|
||||||
"github.com/tidwall/sjson"
|
"github.com/tidwall/sjson"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ const (
|
|||||||
// Date : 17:59 2023/9/1
|
// Date : 17:59 2023/9/1
|
||||||
type FilterOption struct {
|
type FilterOption struct {
|
||||||
DebugModel bool // 调试模式
|
DebugModel bool // 调试模式
|
||||||
|
LogInstance *slog.Logger // 日志实例
|
||||||
}
|
}
|
||||||
|
|
||||||
// FilterDataRule 参数过滤规则
|
// FilterDataRule 参数过滤规则
|
||||||
@ -49,6 +51,12 @@ func NewDataFilter(source string, filterRule []*FilterDataRule, filterOption *Fi
|
|||||||
if nil == filterOption {
|
if nil == filterOption {
|
||||||
filterOption = &FilterOption{}
|
filterOption = &FilterOption{}
|
||||||
}
|
}
|
||||||
|
if filterOption.DebugModel && nil == filterOption.LogInstance {
|
||||||
|
filterOption.LogInstance = slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{
|
||||||
|
Level: slog.LevelDebug,
|
||||||
|
}))
|
||||||
|
slog.SetDefault(filterOption.LogInstance)
|
||||||
|
}
|
||||||
return &DataFilter{
|
return &DataFilter{
|
||||||
source: source,
|
source: source,
|
||||||
filterRule: filterRule,
|
filterRule: filterRule,
|
||||||
@ -75,6 +83,7 @@ type DataFilter struct {
|
|||||||
//
|
//
|
||||||
// Date : 2022/1/22 9:36 PM
|
// Date : 2022/1/22 9:36 PM
|
||||||
func (df *DataFilter) Filter() (string, error) {
|
func (df *DataFilter) Filter() (string, error) {
|
||||||
|
df.logPrint(logLevelInfo, "输入的原始数据", slog.String("source_data", df.source))
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
@ -128,22 +137,21 @@ func (df *DataFilter) setKV(rule *FilterDataRule) error {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 18:00 2023/9/1
|
// Date : 18:00 2023/9/1
|
||||||
func (df *DataFilter) logPrint(level string, msg string, other ...interface{}) {
|
func (df *DataFilter) logPrint(level string, msg string, logAttr ...interface{}) {
|
||||||
if !df.filterOption.DebugModel {
|
if !df.filterOption.DebugModel {
|
||||||
// 未开启调试模式
|
// 未开启调试模式
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch level {
|
switch level {
|
||||||
case logLevelFatal:
|
case logLevelFatal:
|
||||||
slog.Error(msg, other...)
|
slog.Error(msg, logAttr...)
|
||||||
case logLevelWarn:
|
case logLevelWarn:
|
||||||
slog.Warn(msg, other...)
|
slog.Warn(msg, logAttr...)
|
||||||
case logLevelInfo:
|
case logLevelInfo:
|
||||||
slog.Info(msg, other...)
|
slog.Info(msg, logAttr...)
|
||||||
case logLevelDebug:
|
case logLevelDebug:
|
||||||
slog.Debug(msg, other...)
|
slog.Debug(msg, logAttr...)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 日志等级定义
|
// 日志等级定义
|
||||||
|
@ -37,6 +37,7 @@ func TestDataFilter_FilterNormalData(t *testing.T) {
|
|||||||
{SourceKey: "none", MapKey: "none_default", DefaultValue: map[string]interface{}{"a": "a"}, WithDefault: true},
|
{SourceKey: "none", MapKey: "none_default", DefaultValue: map[string]interface{}{"a": "a"}, WithDefault: true},
|
||||||
{SourceKey: "extra", MapKey: "extra_object", DefaultValue: map[string]interface{}{"a": "a"}, WithDefault: true},
|
{SourceKey: "extra", MapKey: "extra_object", DefaultValue: map[string]interface{}{"a": "a"}, WithDefault: true},
|
||||||
},
|
},
|
||||||
|
filterOption: &FilterOption{DebugModel: true},
|
||||||
}
|
}
|
||||||
fmt.Println(df.Filter())
|
fmt.Println(df.Filter())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user