mirror of
https://github.com/aceld/kis-flow.git
synced 2025-01-22 23:20:24 +08:00
commit
142622dfc5
@ -46,7 +46,7 @@ func NewFuncConfig(
|
||||
Name: "unNamedSource",
|
||||
}
|
||||
source = &defaultSource
|
||||
log.Logger().Info("funcName NewConfig source is nil, use default unNamed Source.", "funcName", funcName)
|
||||
log.Logger().InfoF("funcName NewConfig source is nil, funcName = %s, use default unNamed Source.", funcName)
|
||||
}
|
||||
config.Source = *source
|
||||
|
||||
@ -56,10 +56,10 @@ func NewFuncConfig(
|
||||
// FunctionS 和 L 需要必传KisConnector参数,原因是S和L需要通过Connector进行建立流式关系
|
||||
if mode == common.S || mode == common.L {
|
||||
if option == nil {
|
||||
log.Logger().Error("Funcion S/L need option->Cid\n")
|
||||
log.Logger().ErrorF("Funcion S/L need option->Cid\n")
|
||||
return nil
|
||||
} else if option.CName == "" {
|
||||
log.Logger().Error("Funcion S/L need option->Cid\n")
|
||||
log.Logger().ErrorF("Funcion S/L need option->Cid\n")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
@ -97,8 +97,8 @@ func (flow *KisFlow) Fork(ctx context.Context) kis.Flow {
|
||||
}
|
||||
}
|
||||
|
||||
log.Logger().DebugX(ctx, "=====>Flow Fork, ", "oldFlow.funcParams", flow.funcParams)
|
||||
log.Logger().DebugX(ctx, "=====>Flow Fork, ", "newFlow.funcParams", newFlow.GetFuncParamsAllFuncs())
|
||||
log.Logger().DebugFX(ctx, "=====>Flow Fork, oldFlow.funcParams = %+v\n", flow.funcParams)
|
||||
log.Logger().DebugFX(ctx, "=====>Flow Fork, newFlow.funcParams = %+v\n", newFlow.GetFuncParamsAllFuncs())
|
||||
|
||||
return newFlow
|
||||
}
|
||||
@ -257,7 +257,7 @@ func (flow *KisFlow) Run(ctx context.Context) error {
|
||||
|
||||
// 得到当前Function要处理与的源数据
|
||||
if inputData, err := flow.getCurData(); err != nil {
|
||||
log.Logger().ErrorX(ctx, "flow.Run(): getCurData", "err", err.Error())
|
||||
log.Logger().ErrorFX(ctx, "flow.Run(): getCurData err = %s\n", err.Error())
|
||||
return err
|
||||
} else {
|
||||
flow.inPut = inputData
|
||||
@ -350,7 +350,7 @@ func (flow *KisFlow) GetFuncConfigByName(funcName string) *config.KisFuncConfig
|
||||
if f, ok := flow.Funcs[funcName]; ok {
|
||||
return f.GetConfig()
|
||||
} else {
|
||||
log.Logger().Error("GetFuncConfigByName(): Function not found", "FunctionName", funcName)
|
||||
log.Logger().ErrorF("GetFuncConfigByName(): Function %s not found", funcName)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
@ -69,11 +69,11 @@ func (flow *KisFlow) commitSrcData(ctx context.Context) error {
|
||||
// 统计数据总量 Metrics.DataTota 指标累计加1
|
||||
metrics.Metrics.DataTotal.Add(float64(dataCnt))
|
||||
|
||||
// 统计当前Flow数量指标
|
||||
//统计当前Flow数量指标
|
||||
metrics.Metrics.FlowDataTotal.WithLabelValues(flow.Name).Add(float64(dataCnt))
|
||||
}
|
||||
|
||||
log.Logger().DebugX(ctx, "====> After CommitSrcData", "flow_name", flow.Name, "flow_id", flow.Id, "All Level Data", flow.data)
|
||||
log.Logger().DebugFX(ctx, "====> After CommitSrcData, flow_name = %s, flow_id = %s\nAll Level Data =\n %+v\n", flow.Name, flow.Id, flow.data)
|
||||
|
||||
return nil
|
||||
}
|
||||
@ -106,7 +106,7 @@ func (flow *KisFlow) commitReuseData(ctx context.Context) error {
|
||||
// 清空缓冲Buf (如果是ReuseData选项,那么提交的全部数据,都将不会携带到下一层)
|
||||
flow.buffer = flow.buffer[0:0]
|
||||
|
||||
log.Logger().DebugX(ctx, " ====> After commitReuseData", "flow_name", flow.Name, "flow_id", flow.Id, "All Level Data", flow.data)
|
||||
log.Logger().DebugFX(ctx, " ====> After commitReuseData, flow_name = %s, flow_id = %s\nAll Level Data =\n %+v\n", flow.Name, flow.Id, flow.data)
|
||||
|
||||
return nil
|
||||
}
|
||||
@ -122,12 +122,12 @@ func (flow *KisFlow) commitVoidData(ctx context.Context) error {
|
||||
// 将本层计算的缓冲数据提交到本层结果数据中
|
||||
flow.data[flow.ThisFunctionId] = batch
|
||||
|
||||
log.Logger().DebugX(ctx, " ====> After commitVoidData", "flow_name", flow.Name, "flow_id", flow.Id, "All Level Data", flow.data)
|
||||
log.Logger().DebugFX(ctx, " ====> After commitVoidData, flow_name = %s, flow_id = %s\nAll Level Data =\n %+v\n", flow.Name, flow.Id, flow.data)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// commitCurData 提交Flow当前执行Function的结果数据
|
||||
//commitCurData 提交Flow当前执行Function的结果数据
|
||||
func (flow *KisFlow) commitCurData(ctx context.Context) error {
|
||||
|
||||
// 判断本层计算是否有结果数据,如果没有则退出本次Flow Run循环
|
||||
@ -150,7 +150,7 @@ func (flow *KisFlow) commitCurData(ctx context.Context) error {
|
||||
// 清空缓冲Buf
|
||||
flow.buffer = flow.buffer[0:0]
|
||||
|
||||
log.Logger().DebugX(ctx, " ====> After commitCurData", "flow_name", flow.Name, "flow_id", flow.Id, "All Level Data", flow.data)
|
||||
log.Logger().DebugFX(ctx, " ====> After commitCurData, flow_name = %s, flow_id = %s\nAll Level Data =\n %+v\n", flow.Name, flow.Id, flow.data)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -20,11 +20,11 @@ func NewKisFunctionC() kis.Function {
|
||||
}
|
||||
|
||||
func (f *KisFunctionC) Call(ctx context.Context, flow kis.Flow) error {
|
||||
log.Logger().Debug("KisFunctionC", "flow", flow)
|
||||
log.Logger().DebugF("KisFunctionC, flow = %+v\n", flow)
|
||||
|
||||
// 通过KisPool 路由到具体的执行计算Function中
|
||||
if err := kis.Pool().CallFunction(ctx, f.Config.FName, flow); err != nil {
|
||||
log.Logger().ErrorX(ctx, "Function Called Error", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "Function Called Error err = %s\n", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@ func NewKisFunctionE() kis.Function {
|
||||
}
|
||||
|
||||
func (f *KisFunctionE) Call(ctx context.Context, flow kis.Flow) error {
|
||||
log.Logger().Debug("KisFunctionE", "flow", flow)
|
||||
log.Logger().DebugF("KisFunctionE, flow = %+v\n", flow)
|
||||
|
||||
// 通过KisPool 路由到具体的执行计算Function中
|
||||
if err := kis.Pool().CallFunction(ctx, f.Config.FName, flow); err != nil {
|
||||
log.Logger().ErrorX(ctx, "Function Called Error", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "Function Called Error err = %s\n", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@ func NewKisFunctionL() kis.Function {
|
||||
}
|
||||
|
||||
func (f *KisFunctionL) Call(ctx context.Context, flow kis.Flow) error {
|
||||
log.Logger().Debug("KisFunctionL", "flow", flow)
|
||||
log.Logger().DebugF("KisFunctionL, flow = %+v\n", flow)
|
||||
|
||||
// 通过KisPool 路由到具体的执行计算Function中
|
||||
if err := kis.Pool().CallFunction(ctx, f.Config.FName, flow); err != nil {
|
||||
log.Logger().ErrorX(ctx, "Function Called Error", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "Function Called Error err = %s\n", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@ func NewKisFunctionS() kis.Function {
|
||||
}
|
||||
|
||||
func (f *KisFunctionS) Call(ctx context.Context, flow kis.Flow) error {
|
||||
log.Logger().Debug("KisFunctionS", "flow", flow)
|
||||
log.Logger().DebugF("KisFunctionS, flow = %+v\n", flow)
|
||||
|
||||
// 通过KisPool 路由到具体的执行计算Function中
|
||||
if err := kis.Pool().CallFunction(ctx, f.Config.FName, flow); err != nil {
|
||||
log.Logger().ErrorX(ctx, "Function Called Error", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "Function Called Error err = %s\n", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,11 @@ func NewKisFunctionV() kis.Function {
|
||||
}
|
||||
|
||||
func (f *KisFunctionV) Call(ctx context.Context, flow kis.Flow) error {
|
||||
log.Logger().Debug("KisFunctionV", "flow", flow)
|
||||
log.Logger().DebugF("KisFunctionV, flow = %+v\n", flow)
|
||||
|
||||
// 通过KisPool 路由到具体的执行计算Function中
|
||||
if err := kis.Pool().CallFunction(ctx, f.Config.FName, flow); err != nil {
|
||||
log.Logger().ErrorX(ctx, "Function Called Error", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "Function Called Error err = %s\n", err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
20
kis/pool.go
20
kis/pool.go
@ -33,7 +33,7 @@ var _pool *kisPool
|
||||
// Pool 单例构造
|
||||
func Pool() *kisPool {
|
||||
_poolOnce.Do(func() {
|
||||
// 创建kisPool对象
|
||||
//创建kisPool对象
|
||||
_pool = new(kisPool)
|
||||
|
||||
// fnRouter初始化
|
||||
@ -61,7 +61,7 @@ func (pool *kisPool) AddFlow(name string, flow Flow) {
|
||||
panic(errString)
|
||||
}
|
||||
|
||||
log.Logger().Info("Add FlowRouter", "FlowName", name)
|
||||
log.Logger().InfoF("Add FlowRouter FlowName=%s", name)
|
||||
}
|
||||
|
||||
func (pool *kisPool) GetFlow(name string) Flow {
|
||||
@ -95,7 +95,7 @@ func (pool *kisPool) FaaS(fnName string, f FaaS) {
|
||||
panic(errString)
|
||||
}
|
||||
|
||||
log.Logger().Info("Add KisPool", "FuncName", fnName)
|
||||
log.Logger().InfoF("Add KisPool FuncName=%s", fnName)
|
||||
}
|
||||
|
||||
// CallFunction 调度 Function
|
||||
@ -127,7 +127,7 @@ func (pool *kisPool) CallFunction(ctx context.Context, fnName string, flow Flow)
|
||||
// 将flow.Input()中的原始数据,反序列化为argType类型的数据
|
||||
value, err := funcDesc.Serialize.UnMarshal(flow.Input(), argType)
|
||||
if err != nil {
|
||||
log.Logger().ErrorX(ctx, "funcDesc.Serialize.DecodeParam", "err", err)
|
||||
log.Logger().ErrorFX(ctx, "funcDesc.Serialize.DecodeParam err=%v", err)
|
||||
} else {
|
||||
params = append(params, value)
|
||||
continue
|
||||
@ -153,7 +153,7 @@ func (pool *kisPool) CallFunction(ctx context.Context, fnName string, flow Flow)
|
||||
|
||||
}
|
||||
|
||||
log.Logger().ErrorX(ctx, "FuncName: Can not find in KisPool, Not Added.", "FuncName", fnName)
|
||||
log.Logger().ErrorFX(ctx, "FuncName: %s Can not find in KisPool, Not Added.\n", fnName)
|
||||
|
||||
return errors.New("FuncName: " + fnName + " Can not find in NsPool, Not Added.")
|
||||
}
|
||||
@ -170,7 +170,7 @@ func (pool *kisPool) CaaSInit(cname string, c ConnInit) {
|
||||
panic(errString)
|
||||
}
|
||||
|
||||
log.Logger().Info("Add KisPool CaaSInit", "CName", cname)
|
||||
log.Logger().InfoF("Add KisPool CaaSInit CName=%s", cname)
|
||||
}
|
||||
|
||||
// CallConnInit 调度 ConnInit
|
||||
@ -193,10 +193,10 @@ func (pool *kisPool) CaaS(cname string, fname string, mode common.KisMode, c Caa
|
||||
defer pool.cLock.Unlock()
|
||||
|
||||
if _, ok := pool.cTree[cname]; !ok {
|
||||
// cid 首次注册,不存在,创建二级树NsConnSL
|
||||
//cid 首次注册,不存在,创建二级树NsConnSL
|
||||
pool.cTree[cname] = make(connSL)
|
||||
|
||||
// 初始化各类型FunctionMode
|
||||
//初始化各类型FunctionMode
|
||||
pool.cTree[cname][common.S] = make(connFuncRouter)
|
||||
pool.cTree[cname][common.L] = make(connFuncRouter)
|
||||
}
|
||||
@ -208,7 +208,7 @@ func (pool *kisPool) CaaS(cname string, fname string, mode common.KisMode, c Caa
|
||||
panic(errString)
|
||||
}
|
||||
|
||||
log.Logger().Info("Add KisPool CaaS", "CName", cname, "FName", fname, "Mode", mode)
|
||||
log.Logger().InfoF("Add KisPool CaaS CName=%s, FName=%s, Mode =%s", cname, fname, mode)
|
||||
}
|
||||
|
||||
// CallConnector 调度 Connector
|
||||
@ -223,7 +223,7 @@ func (pool *kisPool) CallConnector(ctx context.Context, flow Flow, conn Connecto
|
||||
return callback(ctx, conn, fn, flow, args)
|
||||
}
|
||||
|
||||
log.Logger().ErrorX(ctx, "Can not find in KisPool, Not Added.", "CName", conn.GetName(), " FName", fnConf.FName, "mode", mode)
|
||||
log.Logger().ErrorFX(ctx, "CName:%s FName:%s mode:%s Can not find in KisPool, Not Added.\n", conn.GetName(), fnConf.FName, mode)
|
||||
|
||||
return nil, errors.New(fmt.Sprintf("CName:%s FName:%s mode:%s Can not find in KisPool, Not Added.", conn.GetName(), fnConf.FName, mode))
|
||||
}
|
||||
|
@ -3,159 +3,65 @@ package log
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// kisDefaultLog 默认提供的日志对象
|
||||
type kisDefaultLog struct {
|
||||
debugMode bool
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) SetDebugMode(enable bool) {
|
||||
log.mu.Lock()
|
||||
defer log.mu.Unlock()
|
||||
log.debugMode = enable
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) InfoF(str string, v ...interface{}) {
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) ErrorF(str string, v ...interface{}) {
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) DebugF(str string, v ...interface{}) {
|
||||
log.mu.Lock()
|
||||
defer log.mu.Unlock()
|
||||
if log.debugMode {
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) InfoFX(ctx context.Context, str string, v ...interface{}) {
|
||||
fmt.Println(ctx)
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) ErrorFX(ctx context.Context, str string, v ...interface{}) {
|
||||
fmt.Println(ctx)
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
|
||||
func (log *kisDefaultLog) DebugFX(ctx context.Context, str string, v ...interface{}) {
|
||||
log.mu.Lock()
|
||||
defer log.mu.Unlock()
|
||||
if log.debugMode {
|
||||
fmt.Println(ctx)
|
||||
fmt.Printf(str, v...)
|
||||
fmt.Printf("\n")
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
// 如果没有设置 Logger, 则启动时使用默认的 kisDefaultSlog 对象
|
||||
// 如果没有设置Logger, 则启动时使用默认的kisDefaultLog对象
|
||||
if Logger() == nil {
|
||||
MustNewKisDefaultSlog()
|
||||
SetLogger(&kisDefaultLog{})
|
||||
}
|
||||
}
|
||||
|
||||
func MustNewKisDefaultSlog(opts ...KisLogOptions) {
|
||||
defaultSlog := getKisDefaultSLog(opts...)
|
||||
initDefaultSlog(defaultSlog)
|
||||
SetLogger(defaultSlog)
|
||||
}
|
||||
|
||||
// kisDefaultSlog 默认提供的日志对象
|
||||
type kisDefaultSlog struct {
|
||||
location bool
|
||||
level slog.Level
|
||||
jsonFormat bool
|
||||
writer io.Writer
|
||||
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
type KisLogOptions func(k *kisDefaultSlog)
|
||||
|
||||
func WithLocation(location bool) KisLogOptions {
|
||||
return func(k *kisDefaultSlog) {
|
||||
k.location = location
|
||||
}
|
||||
}
|
||||
|
||||
func WithLevel(level slog.Level) KisLogOptions {
|
||||
return func(k *kisDefaultSlog) {
|
||||
k.level = level
|
||||
}
|
||||
}
|
||||
|
||||
func WithJSONFormat(jsonFormat bool) KisLogOptions {
|
||||
return func(k *kisDefaultSlog) {
|
||||
k.jsonFormat = jsonFormat
|
||||
}
|
||||
}
|
||||
|
||||
func WithWriter(writer io.Writer) KisLogOptions {
|
||||
return func(k *kisDefaultSlog) {
|
||||
k.writer = writer
|
||||
}
|
||||
}
|
||||
|
||||
var defaultKisLog = &kisDefaultSlog{
|
||||
location: true,
|
||||
level: slog.LevelDebug,
|
||||
jsonFormat: false,
|
||||
writer: os.Stdout,
|
||||
}
|
||||
|
||||
func getKisDefaultSLog(opts ...KisLogOptions) *kisDefaultSlog {
|
||||
defaultKisSlog := defaultKisLog
|
||||
if opts == nil {
|
||||
return defaultKisSlog
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(defaultKisSlog)
|
||||
}
|
||||
|
||||
return defaultKisSlog
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) InfoFX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.InfoContext(ctx, fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) ErrorFX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.ErrorContext(ctx, fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) DebugFX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.DebugContext(ctx, fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
// InfoF 使用格式化格式(xxxF或xxxFX)要使用 fmt.Sprintf() 函数进行格式化包装
|
||||
func (k *kisDefaultSlog) InfoF(str string, v ...interface{}) {
|
||||
slog.Info(fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) ErrorF(str string, v ...interface{}) {
|
||||
slog.Error(fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) DebugF(str string, v ...interface{}) {
|
||||
slog.Debug(fmt.Sprintf(str, v...))
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) InfoX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.InfoContext(ctx, str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) ErrorX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.ErrorContext(ctx, str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) DebugX(ctx context.Context, str string, v ...interface{}) {
|
||||
slog.DebugContext(ctx, str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) Info(str string, v ...interface{}) {
|
||||
slog.Info(str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) Error(str string, v ...interface{}) {
|
||||
slog.Error(str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) Debug(str string, v ...interface{}) {
|
||||
slog.Debug(str, v...)
|
||||
}
|
||||
|
||||
func (k *kisDefaultSlog) SetDebugMode() {
|
||||
k.mu.Lock()
|
||||
defer k.mu.Unlock()
|
||||
k.level = slog.LevelDebug
|
||||
}
|
||||
|
||||
func initDefaultSlog(kisLog *kisDefaultSlog) {
|
||||
replace := func(groups []string, a slog.Attr) slog.Attr {
|
||||
if a.Key == slog.SourceKey {
|
||||
source := a.Value.Any().(*slog.Source)
|
||||
source.Function = ""
|
||||
source.File = filepath.Base(source.File)
|
||||
}
|
||||
|
||||
return a
|
||||
}
|
||||
|
||||
ho := &slog.HandlerOptions{
|
||||
AddSource: kisLog.location,
|
||||
Level: kisLog.level,
|
||||
ReplaceAttr: replace,
|
||||
}
|
||||
|
||||
var logger *slog.Logger
|
||||
if kisLog.jsonFormat {
|
||||
logger = slog.New(slog.NewJSONHandler(kisLog.writer, ho))
|
||||
} else {
|
||||
logger = slog.New(slog.NewTextHandler(kisLog.writer, ho))
|
||||
}
|
||||
slog.SetDefault(logger)
|
||||
}
|
||||
|
@ -17,22 +17,8 @@ type KisLogger interface {
|
||||
// DebugF 无上下文的Debug级别日志接口, format字符串格式
|
||||
DebugF(str string, v ...interface{})
|
||||
|
||||
// InfoX 有上下文的Info级别日志接口, format字符串格式
|
||||
InfoX(ctx context.Context, str string, v ...interface{})
|
||||
// ErrorX 有上下文的Error级别日志接口, format字符串格式
|
||||
ErrorX(ctx context.Context, str string, v ...interface{})
|
||||
// DebugX 有上下文的Debug级别日志接口, format字符串格式
|
||||
DebugX(ctx context.Context, str string, v ...interface{})
|
||||
|
||||
// Info 无上下文的Info级别日志接口, format字符串格式
|
||||
Info(str string, v ...interface{})
|
||||
// Error 无上下文的Error级别日志接口, format字符串格式
|
||||
Error(str string, v ...interface{})
|
||||
// Debug 无上下文的Debug级别日志接口, format字符串格式
|
||||
Debug(str string, v ...interface{})
|
||||
|
||||
// SetDebugMode 设置Debug模式
|
||||
SetDebugMode()
|
||||
SetDebugMode(enable bool)
|
||||
}
|
||||
|
||||
// kisLog 默认的KisLog 对象, 提供默认的日志打印方式, 均是打印在标准输出上。
|
||||
|
@ -34,9 +34,9 @@ func RunMetricsService(serverAddr string) error {
|
||||
http.Handle(common.METRICS_ROUTE, promhttp.Handler())
|
||||
|
||||
// 启动HttpServer
|
||||
err := http.ListenAndServe(serverAddr, nil) // 多个进程不可监听同一个端口
|
||||
err := http.ListenAndServe(serverAddr, nil) //多个进程不可监听同一个端口
|
||||
if err != nil {
|
||||
log.Logger().Error("RunMetricsService", "err", err)
|
||||
log.Logger().ErrorF("RunMetricsService err = %s\n", err)
|
||||
}
|
||||
|
||||
return err
|
||||
@ -67,7 +67,7 @@ func InitMetrics() {
|
||||
Name: common.GANGE_FLOW_SCHE_CNTS_NAME,
|
||||
Help: common.GANGE_FLOW_SCHE_CNTS_HELP,
|
||||
},
|
||||
// 标签名称
|
||||
//标签名称
|
||||
[]string{common.LABEL_FLOW_NAME},
|
||||
)
|
||||
|
||||
@ -77,7 +77,7 @@ func InitMetrics() {
|
||||
Name: common.GANGE_FUNC_SCHE_CNTS_NAME,
|
||||
Help: common.GANGE_FUNC_SCHE_CNTS_HELP,
|
||||
},
|
||||
// 标签名称
|
||||
//标签名称
|
||||
[]string{common.LABEL_FUNCTION_NAME, common.LABEL_FUNCTION_MODE},
|
||||
)
|
||||
|
||||
@ -85,7 +85,7 @@ func InitMetrics() {
|
||||
Metrics.FunctionDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
||||
Name: common.HISTOGRAM_FUNCTION_DURATION_NAME,
|
||||
Help: common.HISTOGRAM_FUNCTION_DURATION_HELP,
|
||||
Buckets: []float64{0.005, 0.01, 0.03, 0.08, 0.1, 0.5, 1.0, 5.0, 10, 100, 1000, 5000, 30000}, // 单位ms,最大半分钟
|
||||
Buckets: []float64{0.005, 0.01, 0.03, 0.08, 0.1, 0.5, 1.0, 5.0, 10, 100, 1000, 5000, 30000}, //单位ms,最大半分钟
|
||||
},
|
||||
[]string{common.LABEL_FUNCTION_NAME, common.LABEL_FUNCTION_MODE},
|
||||
)
|
||||
@ -95,7 +95,7 @@ func InitMetrics() {
|
||||
prometheus.HistogramOpts{
|
||||
Name: common.HISTOGRAM_FLOW_DURATION_NAME,
|
||||
Help: common.HISTOGRAM_FLOW_DURATION_HELP,
|
||||
Buckets: []float64{0.005, 0.01, 0.03, 0.08, 0.1, 0.5, 1.0, 5.0, 10, 100, 1000, 5000, 30000, 60000}, // 单位ms,最大1分钟
|
||||
Buckets: []float64{0.005, 0.01, 0.03, 0.08, 0.1, 0.5, 1.0, 5.0, 10, 100, 1000, 5000, 30000, 60000}, //单位ms,最大1分钟
|
||||
},
|
||||
[]string{common.LABEL_FLOW_NAME},
|
||||
)
|
||||
|
@ -19,12 +19,12 @@ func FuncDemo2Handler(ctx context.Context, flow kis.Flow) error {
|
||||
|
||||
conn, err := flow.GetConnector()
|
||||
if err != nil {
|
||||
log.Logger().ErrorX(ctx, "FuncDemo2Handler(): GetConnector", "err", err.Error())
|
||||
log.Logger().ErrorFX(ctx, "FuncDemo2Handler(): GetConnector err = %s\n", err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := conn.Call(ctx, flow, row); err != nil {
|
||||
log.Logger().ErrorX(ctx, "FuncDemo2Handler(): Call", "err", err.Error())
|
||||
log.Logger().ErrorFX(ctx, "FuncDemo2Handler(): Call err = %s\n", err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ func TestNewFuncConfig(t *testing.T) {
|
||||
|
||||
myFunc1 := config.NewFuncConfig("funcName1", common.S, &source, &option)
|
||||
|
||||
log.Logger().Info("funcName1", myFunc1)
|
||||
log.Logger().InfoF("funcName1: %+v\n", myFunc1)
|
||||
}
|
||||
|
||||
func TestNewFlowConfig(t *testing.T) {
|
||||
@ -50,7 +50,7 @@ func TestNewFlowConfig(t *testing.T) {
|
||||
myFlow1.AppendFunctionConfig(flowFuncParams1)
|
||||
myFlow1.AppendFunctionConfig(flowFuncParams2)
|
||||
|
||||
log.Logger().Info("myFlow1", myFlow1)
|
||||
log.Logger().InfoF("myFlow1: %+v\n", myFlow1)
|
||||
}
|
||||
|
||||
func TestNewConnConfig(t *testing.T) {
|
||||
@ -81,8 +81,8 @@ func TestNewConnConfig(t *testing.T) {
|
||||
myConnector1 := config.NewConnConfig("connectorName1", "0.0.0.0:9987,0.0.0.0:9997", common.REDIS, "key", connParams)
|
||||
|
||||
if err := myConnector1.WithFunc(myFunc1); err != nil {
|
||||
log.Logger().Error("WithFunc", "err", err.Error())
|
||||
log.Logger().ErrorF("WithFunc err: %s\n", err.Error())
|
||||
}
|
||||
|
||||
log.Logger().Info("myConnector1", myConnector1)
|
||||
log.Logger().InfoF("myConnector1: %+v\n", myConnector1)
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ func TestForkFlowCommitBatch(t *testing.T) {
|
||||
|
||||
// 3. 提交原始数据
|
||||
if err := flow1.CommitRowBatch(stringRows); err != nil {
|
||||
log.Logger().Error("CommitRowBatch Error", "err", err)
|
||||
log.Logger().ErrorF("CommitRowBatch Error, err = %+v", err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
@ -9,22 +9,11 @@ import (
|
||||
func TestKisLogger(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
log.Logger().DebugF("TestKisLogger Format DebugF name = %s, age = %d", "kisFlow", 23)
|
||||
log.Logger().ErrorF("TestKisLogger Format ErrorF name = %s, age = %d", "kisFlow", 12)
|
||||
log.Logger().InfoF("TestKisLogger Format InfoF name = %s, stu =%+v", "kisFlow",
|
||||
struct {
|
||||
name string
|
||||
age int
|
||||
}{
|
||||
name: "kisName",
|
||||
age: 12,
|
||||
})
|
||||
log.Logger().InfoFX(ctx, "TestKisLogger InfoFX")
|
||||
log.Logger().ErrorFX(ctx, "TestKisLogger ErrorFX")
|
||||
log.Logger().DebugFX(ctx, "TestKisLogger DebugFX")
|
||||
|
||||
log.Logger().InfoX(ctx, "TestKisLogger InfoX")
|
||||
log.Logger().ErrorX(ctx, "TestKisLogger ErrorX")
|
||||
log.Logger().DebugX(ctx, "TestKisLogger DebugX")
|
||||
|
||||
log.Logger().Info("TestKisLogger Info")
|
||||
log.Logger().Error("TestKisLogger Error")
|
||||
log.Logger().Debug("TestKisLogger Debug")
|
||||
log.Logger().InfoF("TestKisLogger InfoF")
|
||||
log.Logger().ErrorF("TestKisLogger ErrorF")
|
||||
log.Logger().DebugF("TestKisLogger DebugF")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user