Commit fc3e08ac28731c8dc48afec82bb4653e38d856e3
1 parent
c1d56a47
feat: add log component
Showing
6 changed files
with
91 additions
and
1 deletions
Show diff stats
cmd/gameserver/service/agent.go
@@ -131,11 +131,16 @@ func (c *Agent) OnMessage(msg components.IMessage) error { | @@ -131,11 +131,16 @@ func (c *Agent) OnMessage(msg components.IMessage) error { | ||
131 | return c.Send(-101, msg.GetHeader().GetMsgID(), nil, msg.GetHeader().GetPreserve()) | 131 | return c.Send(-101, msg.GetHeader().GetMsgID(), nil, msg.GetHeader().GetPreserve()) |
132 | } | 132 | } |
133 | 133 | ||
134 | + c.Role.StartActionUnicode() | ||
135 | + | ||
134 | // 调用协议号对应的逻辑函数 | 136 | // 调用协议号对应的逻辑函数 |
135 | f := method.(func(role *models.RoleModel, msg components.IMessage) (int32, interface{})) | 137 | f := method.(func(role *models.RoleModel, msg components.IMessage) (int32, interface{})) |
136 | errCode, protoMsg := f(c.Role, msg) | 138 | errCode, protoMsg := f(c.Role, msg) |
137 | logger.Debug("rsp errcode: %d, protocode: %d", errCode, msg.GetHeader().GetMsgID()) | 139 | logger.Debug("rsp errcode: %d, protocode: %d", errCode, msg.GetHeader().GetMsgID()) |
138 | - return c.SendMsg(errCode, msg.GetHeader().GetMsgID(), protoMsg, msg.GetHeader().GetPreserve()) | 140 | + err := c.SendMsg(errCode, msg.GetHeader().GetMsgID(), protoMsg, msg.GetHeader().GetPreserve()) |
141 | + | ||
142 | + c.Role.EndActionUnicode() | ||
143 | + return err | ||
139 | } | 144 | } |
140 | 145 | ||
141 | func (c *Agent) OnTimer() { | 146 | func (c *Agent) OnTimer() { |
common/components/icompontents.go
@@ -161,6 +161,7 @@ type ( | @@ -161,6 +161,7 @@ type ( | ||
161 | Update() | 161 | Update() |
162 | 162 | ||
163 | SetProperty(key string, val interface{}) | 163 | SetProperty(key string, val interface{}) |
164 | + GetProperty(key string) interface{} | ||
164 | SetProperties(properties map[string]interface{}) | 165 | SetProperties(properties map[string]interface{}) |
165 | IncrProperty(key string, val int64) int64 | 166 | IncrProperty(key string, val int64) int64 |
166 | ParseFields(message protoreflect.Message, properties map[string]interface{}) []int32 | 167 | ParseFields(message protoreflect.Message, properties map[string]interface{}) []int32 |
docker/restart.sh
@@ -5,3 +5,5 @@ | @@ -5,3 +5,5 @@ | ||
5 | /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose-service.yml up -d | 5 | /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose-service.yml up -d |
6 | /usr/local/bin/docker ps -a | 6 | /usr/local/bin/docker ps -a |
7 | /usr/local/bin/docker rmi $(/usr/local/bin/docker images -f "dangling=true" -q) | 7 | /usr/local/bin/docker rmi $(/usr/local/bin/docker images -f "dangling=true" -q) |
8 | + | ||
9 | +docker rmi $(docker images -f "dangling=true" -q) | ||
8 | \ No newline at end of file | 10 | \ No newline at end of file |
models/RoleLog.go
1 | package models | 1 | package models |
2 | + | ||
3 | +import ( | ||
4 | + "encoding/json" | ||
5 | + "fmt" | ||
6 | + "pro2d/common" | ||
7 | + "pro2d/common/logger" | ||
8 | + "sync/atomic" | ||
9 | +) | ||
10 | + | ||
11 | +var LogType = map[string]string{ | ||
12 | + "in_item": "common", | ||
13 | + "out_item": "common", | ||
14 | + "in_hero": "common", | ||
15 | + "out_hero": "common", | ||
16 | + "in_equip": "common", | ||
17 | + "out_equip": "common", | ||
18 | + | ||
19 | + "role_action": "common", | ||
20 | +} | ||
21 | + | ||
22 | +var commonRoleField = []string{ | ||
23 | + "id", | ||
24 | + "uid", | ||
25 | + "name", | ||
26 | + "device", | ||
27 | + "level", | ||
28 | +} | ||
29 | + | ||
30 | +func (m *RoleModel) MyLog(logType string, content map[string]interface{}) { | ||
31 | + _, ok := LogType[logType] | ||
32 | + if !ok { | ||
33 | + logger.Error("LOG ERROR: new logType [%s] need Add Maping.", logType) | ||
34 | + return | ||
35 | + } | ||
36 | + | ||
37 | + doc := make(map[string]interface{}) | ||
38 | + for _, field := range commonRoleField { | ||
39 | + if content[field] != nil { | ||
40 | + logger.Error("LOG ERROR: logType [%s] had field [%s] overwrite default.", logType, field) | ||
41 | + } | ||
42 | + | ||
43 | + v := m.GetProperty(field) | ||
44 | + if v != nil { | ||
45 | + doc[field] = v | ||
46 | + } | ||
47 | + } | ||
48 | + content["ucode"] = m.GetActionUnicode() | ||
49 | + for field, value := range content { | ||
50 | + doc[field] = value | ||
51 | + } | ||
52 | + doc["@type"] = logType | ||
53 | + j, err := json.Marshal(doc) | ||
54 | + if err != nil { | ||
55 | + logger.Error("LOG ERROR: logType [%s] json.Marshal", logType) | ||
56 | + return | ||
57 | + } | ||
58 | + logger.Debug(j) | ||
59 | +} | ||
60 | + | ||
61 | +func (m *RoleModel) StartActionUnicode() { | ||
62 | + uniqueCount := atomic.AddInt64(&m.uniqueCount, 1) | ||
63 | + m.actionUcode = fmt.Sprintf("%s-%d-%d", m.Data.Id, common.Timex(), uniqueCount) | ||
64 | +} | ||
65 | + | ||
66 | +func (m *RoleModel) EndActionUnicode() { | ||
67 | + m.actionUcode = "" | ||
68 | +} | ||
69 | + | ||
70 | +func (m *RoleModel) GetActionUnicode() string { | ||
71 | + return m.actionUcode | ||
72 | +} |
models/role.go
@@ -21,6 +21,9 @@ type RoleModel struct { | @@ -21,6 +21,9 @@ type RoleModel struct { | ||
21 | Items common.IMapStringNum //背包 | 21 | Items common.IMapStringNum //背包 |
22 | 22 | ||
23 | lastSaveTs int64 | 23 | lastSaveTs int64 |
24 | + | ||
25 | + uniqueCount int64 | ||
26 | + actionUcode string | ||
24 | } | 27 | } |
25 | 28 | ||
26 | func RoleExistByUid(uid string) *RoleModel { | 29 | func RoleExistByUid(uid string) *RoleModel { |
models/schema.go
@@ -171,6 +171,14 @@ func (s *Schema) SetProperty(key string, val interface{}) { | @@ -171,6 +171,14 @@ func (s *Schema) SetProperty(key string, val interface{}) { | ||
171 | s.cacheFields[strings.ToLower(key)] = val | 171 | s.cacheFields[strings.ToLower(key)] = val |
172 | } | 172 | } |
173 | 173 | ||
174 | +func (s *Schema) GetProperty(key string) interface{} { | ||
175 | + idx, ok := s.reflectIndex[strings.ToLower(key)] | ||
176 | + if !ok { | ||
177 | + return nil | ||
178 | + } | ||
179 | + return s.reflectValue.Field(idx).Interface() | ||
180 | +} | ||
181 | + | ||
174 | //更新内存,并把字段缓存 | 182 | //更新内存,并把字段缓存 |
175 | func (s *Schema) SetProperties(properties map[string]interface{}) { | 183 | func (s *Schema) SetProperties(properties map[string]interface{}) { |
176 | for key, val := range properties { | 184 | for key, val := range properties { |