feat: 支持wire日志便于问题诊断
Signed-off-by: 金喜 <jinxi.kj@alibaba-inc.com>
This commit is contained in:
parent
3134437c29
commit
a561b39a6d
|
|
@ -126,7 +126,7 @@ func (cli *StreamClient) processLoop() {
|
|||
return
|
||||
}
|
||||
|
||||
logger.GetLogger().Debugf("ReadRawMessage : messageType=[%d] message=[%s]", messageType, string(message))
|
||||
logger.GetLogger().Debugf("[wire] [websocket] remote => local: \n%s", string(message))
|
||||
|
||||
go cli.processDataFrame(message)
|
||||
}
|
||||
|
|
@ -176,7 +176,8 @@ func (cli *StreamClient) processDataFrame(rawData []byte) {
|
|||
}
|
||||
|
||||
errSend := cli.SendDataFrameResponse(context.Background(), dataAck)
|
||||
logger.GetLogger().Debugf("SendFrameAck dataAck=[%v", dataAck)
|
||||
sentBytes, _ := json.Marshal(dataAck)
|
||||
logger.GetLogger().Debugf("[wire] [websocket] local => remote:\n%s", string(sentBytes))
|
||||
|
||||
if errSend != nil {
|
||||
logger.GetLogger().Errorf("connection processDataFrame send response error: error=[%s]", errSend)
|
||||
|
|
@ -304,6 +305,9 @@ func (cli *StreamClient) GetConnectionEndpoint(ctx context.Context) (*payload.Co
|
|||
Timeout: 5 * time.Second, //设置超时,包含connection时间、任意重定向时间、读取response body时间
|
||||
}
|
||||
|
||||
logger.GetLogger().Debugf("[wire] [http] local => remote:\n%s %s %s\nHost: %s\n%s\n\n%s",
|
||||
req.Method, req.URL.RequestURI(), req.Proto, req.Host,
|
||||
utils.DumpHeaders(req.Header), requestJsonBody)
|
||||
resp, err := httpClient.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -319,6 +323,9 @@ func (cli *StreamClient) GetConnectionEndpoint(ctx context.Context) (*payload.Co
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
logger.GetLogger().Debugf("[wire] [http] remote => localhost:\n%s %s\n%s\n\n%s",
|
||||
resp.Proto, resp.Status,
|
||||
utils.DumpHeaders(resp.Header), responseJsonBody)
|
||||
|
||||
endpoint := &payload.ConnectionEndpointResponse{}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ type UserAgentConfig struct {
|
|||
|
||||
func NewDingtalkGoSDKUserAgent() *UserAgentConfig {
|
||||
return &UserAgentConfig{
|
||||
UserAgent: "dingtalk-sdk-go/v0.5.1",
|
||||
UserAgent: "dingtalk-sdk-go/v0.6.1",
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ func main() {
|
|||
|
||||
flag.Parse()
|
||||
|
||||
logger.SetLogger(logger.NewStdTestLogger())
|
||||
logger.SetLogger(logger.NewStdTestLoggerWithDebug())
|
||||
|
||||
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
|
||||
|
||||
|
|
|
|||
|
|
@ -12,16 +12,27 @@ import (
|
|||
|
||||
// This logger is only for debug. Do not use it online.
|
||||
type StdTestLogger struct {
|
||||
isDebugEnabled bool
|
||||
}
|
||||
|
||||
func NewStdTestLogger() *StdTestLogger {
|
||||
return &StdTestLogger{}
|
||||
return &StdTestLogger{
|
||||
isDebugEnabled: false,
|
||||
}
|
||||
}
|
||||
|
||||
func NewStdTestLoggerWithDebug() *StdTestLogger {
|
||||
return &StdTestLogger{
|
||||
isDebugEnabled: true,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *StdTestLogger) Debugf(format string, args ...interface{}) {
|
||||
if l.isDebugEnabled {
|
||||
fmt.Printf("%s [Debug] ", time.Now().String())
|
||||
fmt.Printf(format, args...)
|
||||
fmt.Print("\n")
|
||||
}
|
||||
}
|
||||
|
||||
func (l *StdTestLogger) Infof(format string, args ...interface{}) {
|
||||
|
|
|
|||
13
utils/net.go
13
utils/net.go
|
|
@ -2,7 +2,10 @@ package utils
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func GetFirstLanIP() (string, error) {
|
||||
|
|
@ -23,3 +26,13 @@ func GetFirstLanIP() (string, error) {
|
|||
}
|
||||
return "", errors.New("no valid interfaces")
|
||||
}
|
||||
|
||||
func DumpHeaders(h http.Header) string {
|
||||
var lines []string
|
||||
for name, values := range h {
|
||||
for _, value := range values {
|
||||
lines = append(lines, fmt.Sprintf("%s: %s", name, value))
|
||||
}
|
||||
}
|
||||
return strings.Join(lines, "\n")
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue