package runtimeLogs import ( "strings" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/httpdns/httpdnsutils" ) type IndexAction struct { actionutils.ParentAction } func (this *IndexAction) Init() { this.Nav("httpdns", "runtimeLogs", "") } func (this *IndexAction) RunGet(params struct { ClusterId int64 NodeId int64 DayFrom string DayTo string Level string Keyword string }) { httpdnsutils.AddLeftMenu(this.Parent()) this.Data["clusterId"] = params.ClusterId this.Data["nodeId"] = params.NodeId this.Data["dayFrom"] = params.DayFrom this.Data["dayTo"] = params.DayTo this.Data["level"] = params.Level this.Data["keyword"] = params.Keyword clusters := []map[string]interface{}{ {"id": int64(1), "name": "gateway-cn-hz"}, {"id": int64(2), "name": "gateway-cn-bj"}, } nodes := []map[string]interface{}{ {"id": int64(101), "clusterId": int64(1), "name": "hz-node-01"}, {"id": int64(102), "clusterId": int64(1), "name": "hz-node-02"}, {"id": int64(201), "clusterId": int64(2), "name": "bj-node-01"}, } this.Data["clusters"] = clusters this.Data["nodes"] = nodes allLogs := []map[string]interface{}{ { "createdTime": "2026-02-23 10:30:12", "clusterId": int64(1), "clusterName": "gateway-cn-hz", "nodeId": int64(101), "nodeName": "hz-node-01", "level": "info", "tag": "config", "module": "resolver", "description": "\u914d\u7f6e\u70ed\u52a0\u8f7d\u5b8c\u6210\uff0c\u5df2\u542f\u7528\u6700\u65b0\u7b56\u7565\u5feb\u7167\u3002", "count": int64(1), "requestId": "rid-20260223-001", }, { "createdTime": "2026-02-23 10:27:38", "clusterId": int64(2), "clusterName": "gateway-cn-bj", "nodeId": int64(201), "nodeName": "bj-node-01", "level": "warning", "tag": "sni", "module": "policy-engine", "description": "\u68c0\u6d4b\u5230 level3 \u6761\u4ef6\u4e0d\u6ee1\u8db3\uff0c\u81ea\u52a8\u964d\u7ea7\u5230 level2\u3002", "count": int64(3), "requestId": "rid-20260223-002", }, { "createdTime": "2026-02-23 10:22:49", "clusterId": int64(1), "clusterName": "gateway-cn-hz", "nodeId": int64(102), "nodeName": "hz-node-02", "level": "success", "tag": "cache-refresh", "module": "cache", "description": "\u57df\u540d\u7f13\u5b58\u5237\u65b0\u4efb\u52a1\u5b8c\u6210\uff0c\u6210\u529f 2/2\u3002", "count": int64(1), "requestId": "rid-20260223-003", }, { "createdTime": "2026-02-23 10:18:11", "clusterId": int64(1), "clusterName": "gateway-cn-hz", "nodeId": int64(101), "nodeName": "hz-node-01", "level": "error", "tag": "upstream", "module": "resolver", "description": "\u4e0a\u6e38\u6743\u5a01 DNS \u8bf7\u6c42\u8d85\u65f6\uff0c\u89e6\u53d1\u91cd\u8bd5\u540e\u6062\u590d\u3002", "count": int64(2), "requestId": "rid-20260223-004", }, } keyword := strings.TrimSpace(strings.ToLower(params.Keyword)) filtered := make([]map[string]interface{}, 0) for _, log := range allLogs { if params.ClusterId > 0 && log["clusterId"].(int64) != params.ClusterId { continue } if params.NodeId > 0 && log["nodeId"].(int64) != params.NodeId { continue } if len(params.Level) > 0 && log["level"].(string) != params.Level { continue } if len(params.DayFrom) > 0 { if log["createdTime"].(string)[:10] < params.DayFrom { continue } } if len(params.DayTo) > 0 { if log["createdTime"].(string)[:10] > params.DayTo { continue } } if len(keyword) > 0 { if !strings.Contains(strings.ToLower(log["tag"].(string)), keyword) && !strings.Contains(strings.ToLower(log["module"].(string)), keyword) && !strings.Contains(strings.ToLower(log["description"].(string)), keyword) && !strings.Contains(strings.ToLower(log["nodeName"].(string)), keyword) { continue } } filtered = append(filtered, log) } this.Data["runtimeLogs"] = filtered this.Show() }