|
@@ -0,0 +1,60 @@
|
|
|
|
+package handlelog
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "encoding/json"
|
|
|
|
+ "strings"
|
|
|
|
+
|
|
|
|
+ "github.com/mhaya/game/game_cluster/internal/code"
|
|
|
|
+ "github.com/mhaya/game/game_cluster/internal/param"
|
|
|
|
+ "github.com/mhaya/game/game_cluster/nodes/logstash/module/event"
|
|
|
|
+ mhayaLogger "github.com/mhaya/logger"
|
|
|
|
+ cactor "github.com/mhaya/net/actor"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+type (
|
|
|
|
+ HandleLogObject struct {
|
|
|
|
+ cactor.Base
|
|
|
|
+ }
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+func (p *HandleLogObject) AliasID() string {
|
|
|
|
+ return "handlelog"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// OnInit logstash为后端节点,不直接与客户端通信,所以注册了一些remote函数,供RPC调用
|
|
|
|
+func (p *HandleLogObject) OnInit() {
|
|
|
|
+ p.Remote().Register("handlelog", p.handlelog)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// handlelog 处理各个节点发送的日志记录
|
|
|
|
+func (p *HandleLogObject) handlelog(req *param.HandleLogReq) int32 {
|
|
|
|
+ mhayaLogger.Warnf("handlelog req:%v", req)
|
|
|
|
+
|
|
|
|
+ if strings.TrimSpace(req.JsonContent) == "" || strings.TrimSpace(req.ServerId) == "" || strings.TrimSpace(req.EventName) == "" {
|
|
|
|
+ return code.Error
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ e := event.GetEventIdMap().GetEvent(req.EventName)
|
|
|
|
+ if e == nil {
|
|
|
|
+ mhayaLogger.Warnf("handlelog unknow event:%s", req.EventName)
|
|
|
|
+ return code.Error
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return p.handlelogContent(req, e)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (p *HandleLogObject) handlelogContent(req *param.HandleLogReq, e event.Eventer) int32 {
|
|
|
|
+ switch e.(type) {
|
|
|
|
+ case *event.PlayerLoginEventContent:
|
|
|
|
+ content := &event.PlayerLoginEventContent{}
|
|
|
|
+ err := json.Unmarshal([]byte(req.JsonContent), &content)
|
|
|
|
+ if err != nil {
|
|
|
|
+ mhayaLogger.Warnf("handlelog Unmarshal err:%v", err)
|
|
|
|
+ return code.Error
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // TODO 将流水日志写入clickhouse等等
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return code.OK
|
|
|
|
+}
|