From fd34e6714259836d80e757e9c8cab3eb8079e397 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Sat, 29 Mar 2025 14:58:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9C=A8=20MsgInHandler=20=E5=92=8C=20N?= =?UTF-8?q?ewWebSocketClient=20=E4=B8=AD=E5=A2=9E=E5=BC=BA=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=9A=84=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E4=BB=A5?= =?UTF-8?q?=E6=8D=95=E8=8E=B7=E5=BC=82=E5=B8=B8=E4=BF=A1=E6=81=AF=E5=92=8C?= =?UTF-8?q?=E5=A0=86=E6=A0=88=E8=B7=9F=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/handler.go | 8 +++++++- ws_client/client.go | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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() } }()