diff --git a/handler/handler.go b/handler/handler.go index 414c219..5034dfb 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -1,9 +1,12 @@ package handler import ( + "fmt" "log" "regexp" + "runtime/debug" "strings" + "time" "git.lxtend.com/qqbot/auth" "git.lxtend.com/qqbot/constants" @@ -88,7 +91,10 @@ func RegisterRegexHandler(trigger string, handler model.Handler, level constants func MsgInHandler(msg model.Message) (reply model.Reply) { defer func() { if r := recover(); r != nil { - log.Default().Printf("Recovered in MsgInHandler: %v", r) + stack := debug.Stack() + errMsg := fmt.Sprintf("[%s] Panic recovered:\nError: %v\nStack Trace:\n%s\n", + time.Now().Format("2006-01-02 15:04:05"), r, stack) + log.Print(errMsg) } }() if msg.RawMsg != "" { diff --git a/ws_client/client.go b/ws_client/client.go index 620e62b..c89a8eb 100644 --- a/ws_client/client.go +++ b/ws_client/client.go @@ -2,9 +2,12 @@ package wsclient import ( "encoding/json" + "fmt" "log" "net/url" + "runtime/debug" "sync" + "time" "git.lxtend.com/qqbot/action" "git.lxtend.com/qqbot/constants" @@ -36,7 +39,12 @@ func NewWebSocketClient(scheme, host, path string) (*WebSocketClient, error) { } defer func() { if r := recover(); r != nil { - log.Print("Recovered in NewWebSocketClient:", r) + stack := debug.Stack() + errMsg := fmt.Sprintf("[%s] Panic recovered:\nError: %v\nStack Trace:\n%s\n", + time.Now().Format("2006-01-02 15:04:05"), r, stack) + + // 写入日志文件 + log.Print(errMsg) go client.receiveMessages() } }()