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
|
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)
|
go cli.processDataFrame(message)
|
||||||
}
|
}
|
||||||
|
|
@ -176,7 +176,8 @@ func (cli *StreamClient) processDataFrame(rawData []byte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
errSend := cli.SendDataFrameResponse(context.Background(), dataAck)
|
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 {
|
if errSend != nil {
|
||||||
logger.GetLogger().Errorf("connection processDataFrame send response error: error=[%s]", errSend)
|
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时间
|
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)
|
resp, err := httpClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -319,6 +323,9 @@ func (cli *StreamClient) GetConnectionEndpoint(ctx context.Context) (*payload.Co
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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{}
|
endpoint := &payload.ConnectionEndpointResponse{}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ type UserAgentConfig struct {
|
||||||
|
|
||||||
func NewDingtalkGoSDKUserAgent() *UserAgentConfig {
|
func NewDingtalkGoSDKUserAgent() *UserAgentConfig {
|
||||||
return &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()
|
flag.Parse()
|
||||||
|
|
||||||
logger.SetLogger(logger.NewStdTestLogger())
|
logger.SetLogger(logger.NewStdTestLoggerWithDebug())
|
||||||
|
|
||||||
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
|
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,17 +12,28 @@ import (
|
||||||
|
|
||||||
// This logger is only for debug. Do not use it online.
|
// This logger is only for debug. Do not use it online.
|
||||||
type StdTestLogger struct {
|
type StdTestLogger struct {
|
||||||
|
isDebugEnabled bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStdTestLogger() *StdTestLogger {
|
func NewStdTestLogger() *StdTestLogger {
|
||||||
return &StdTestLogger{}
|
return &StdTestLogger{
|
||||||
|
isDebugEnabled: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewStdTestLoggerWithDebug() *StdTestLogger {
|
||||||
|
return &StdTestLogger{
|
||||||
|
isDebugEnabled: true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *StdTestLogger) Debugf(format string, args ...interface{}) {
|
func (l *StdTestLogger) Debugf(format string, args ...interface{}) {
|
||||||
|
if l.isDebugEnabled {
|
||||||
fmt.Printf("%s [Debug] ", time.Now().String())
|
fmt.Printf("%s [Debug] ", time.Now().String())
|
||||||
fmt.Printf(format, args...)
|
fmt.Printf(format, args...)
|
||||||
fmt.Print("\n")
|
fmt.Print("\n")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (l *StdTestLogger) Infof(format string, args ...interface{}) {
|
func (l *StdTestLogger) Infof(format string, args ...interface{}) {
|
||||||
fmt.Printf("%s [INFO] ", time.Now().String())
|
fmt.Printf("%s [INFO] ", time.Now().String())
|
||||||
|
|
|
||||||
13
utils/net.go
13
utils/net.go
|
|
@ -2,7 +2,10 @@ package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetFirstLanIP() (string, error) {
|
func GetFirstLanIP() (string, error) {
|
||||||
|
|
@ -23,3 +26,13 @@ func GetFirstLanIP() (string, error) {
|
||||||
}
|
}
|
||||||
return "", errors.New("no valid interfaces")
|
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