diff --git a/curlx.go b/curlx.go index 7c97793..d33ab5e 100644 --- a/curlx.go +++ b/curlx.go @@ -168,6 +168,7 @@ func (c *Curlx) sendExec(ctx context.Context, ps ...Param) (req *http.Request, r for _, param := range ps { param(&p) } + c.opts.Logger.Infof(ctx,"curlx.sendExec params:%+v", p) err = p.parseMethod() if err != nil { @@ -177,12 +178,14 @@ func (c *Curlx) sendExec(ctx context.Context, ps ...Param) (req *http.Request, r // 判断和处理url err = p.parseUrl() if err != nil { + c.opts.Logger.Errorf(ctx,"curlx.sendExec parseUrl err:%v", err) return nil, nil, err } // 处理参数 reqParams, err := p.parseParams() if err != nil { + c.opts.Logger.Errorf(ctx,"curlx.sendExec parseParams err:%v", err) return nil, nil, err } @@ -193,6 +196,7 @@ func (c *Curlx) sendExec(ctx context.Context, ps ...Param) (req *http.Request, r reqParams, ) if err != nil { + c.opts.Logger.Errorf(ctx,"curlx.sendExec NewRequest err:%v", err) return nil, nil, err } @@ -211,6 +215,7 @@ func (c *Curlx) sendExec(ctx context.Context, ps ...Param) (req *http.Request, r // 发起请求 response, err := client.Do(request) if err != nil { + c.opts.Logger.Errorf(ctx,"curlx.sendExec client.Do err:%v", err) return nil, nil, err } // response.StatusCode diff --git a/options.go b/options.go index 3388a3d..b1d2ab0 100644 --- a/options.go +++ b/options.go @@ -1,15 +1,21 @@ package curlx -import "time" +import ( + "context" + "log" + "time" +) type clientOptions struct { TimeOut time.Duration InsecureSkipVerify bool + Logger OptionLogger } func defaultOptions() clientOptions { return clientOptions{ TimeOut: time.Second * 120, // 默认超时120 + Logger: defaultLogger{}, } } @@ -32,3 +38,29 @@ func SetOptionTLSInsecureSkipVerify() Option { options.InsecureSkipVerify = true } } + +/** + * 设置日志输出 + */ +func SetOptionLog(log OptionLogger) Option { + return func(options *clientOptions) { + options.Logger = log + } +} + +type OptionLogger interface { + Infof(ctx context.Context, format string, args ...interface{}) + Errorf(ctx context.Context, format string, args ...interface{}) +} + +type defaultLogger struct{} + +func (defaultLogger) Errorf(ctx context.Context, format string, args ...interface{}) { + // 输出日志 + log.Printf(format, args...) +} + +func (defaultLogger) Infof(ctx context.Context, format string, args ...interface{}) { + // 输出日志 + log.Printf(format, args...) +}