支持使用小时筛选访问日志

This commit is contained in:
GoEdgeLab
2022-03-09 11:00:49 +08:00
parent 93e80230dd
commit 3a546b626d
5 changed files with 37 additions and 13 deletions

View File

@@ -25,6 +25,7 @@ func (this *IndexAction) RunGet(params struct {
ClusterId int64 ClusterId int64
NodeId int64 NodeId int64
Day string Day string
Hour string
Keyword string Keyword string
Ip string Ip string
Domain string Domain string
@@ -45,6 +46,7 @@ func (this *IndexAction) RunGet(params struct {
this.Data["serverId"] = 0 this.Data["serverId"] = 0
this.Data["path"] = this.Request.URL.Path this.Data["path"] = this.Request.URL.Path
this.Data["day"] = params.Day this.Data["day"] = params.Day
this.Data["hour"] = params.Hour
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["ip"] = params.Ip this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain this.Data["domain"] = params.Domain
@@ -76,6 +78,8 @@ func (this *IndexAction) RunGet(params struct {
HasError: params.HasError > 0, HasError: params.HasError > 0,
HasFirewallPolicy: params.HasWAF > 0, HasFirewallPolicy: params.HasWAF > 0,
Day: day, Day: day,
HourFrom: params.Hour,
HourTo: params.Hour,
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip, Ip: params.Ip,
Domain: params.Domain, Domain: params.Domain,

View File

@@ -21,6 +21,7 @@ func (this *HistoryAction) Init() {
func (this *HistoryAction) RunGet(params struct { func (this *HistoryAction) RunGet(params struct {
ServerId int64 ServerId int64
Day string Day string
Hour string
Keyword string Keyword string
Ip string Ip string
Domain string Domain string
@@ -40,6 +41,7 @@ func (this *HistoryAction) RunGet(params struct {
this.Data["path"] = this.Request.URL.Path this.Data["path"] = this.Request.URL.Path
this.Data["day"] = params.Day this.Data["day"] = params.Day
this.Data["hour"] = params.Hour
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["ip"] = params.Ip this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain this.Data["domain"] = params.Domain
@@ -68,6 +70,8 @@ func (this *HistoryAction) RunGet(params struct {
HasError: params.HasError > 0, HasError: params.HasError > 0,
HasFirewallPolicy: params.HasWAF > 0, HasFirewallPolicy: params.HasWAF > 0,
Day: day, Day: day,
HourFrom: params.Hour,
HourTo: params.Hour,
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip, Ip: params.Ip,
Domain: params.Domain, Domain: params.Domain,

View File

@@ -78,11 +78,11 @@ Vue.component("http-access-log-search-box", {
<div class="ui field"> <div class="ui field">
<div class="ui input left right labeled small"> <div class="ui input left right labeled small">
<span class="ui label basic" style="font-weight: normal">关键词</span> <span class="ui label basic" style="font-weight: normal">关键词</span>
<input type="text" name="keyword" v-model="keyword" placeholder="路径、UserAgent等..." size="18"/> <input type="text" name="keyword" v-model="keyword" placeholder="路径、UserAgent等..." size="30"/>
<a class="ui label basic" :class="{disabled: keyword.length == 0}" @click.prevent="cleanKeyword"><i class="icon remove small"></i></a> <a class="ui label basic" :class="{disabled: keyword.length == 0}" @click.prevent="cleanKeyword"><i class="icon remove small"></i></a>
</div> </div>
</div> </div>
<slot></slot> <div class="ui field"><tip-icon content="一些特殊的关键词:<br/>单个状态码status:200<br/>状态码范围status:500-504<br/>查询IPip:192.168.1.100"></tip-icon></div>
</div> </div>
<div class="ui fields inline" style="margin-top: 0.5em"> <div class="ui fields inline" style="margin-top: 0.5em">
<div class="ui field"> <div class="ui field">
@@ -91,6 +91,7 @@ Vue.component("http-access-log-search-box", {
<div class="ui field" v-if="clusterId > 0"> <div class="ui field" v-if="clusterId > 0">
<node-combo-box :v-cluster-id="clusterId" :v-node-id="vNodeId"></node-combo-box> <node-combo-box :v-cluster-id="clusterId" :v-node-id="vNodeId"></node-combo-box>
</div> </div>
<slot></slot>
<div class="ui field"> <div class="ui field">
<button class="ui button small" type="submit">搜索日志</button> <button class="ui button small" type="submit">搜索日志</button>
</div> </div>

View File

@@ -2,9 +2,9 @@
{$template "/datepicker"} {$template "/datepicker"}
<first-menu> <first-menu>
<menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item> <menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item>
<menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasError > 0">错误日志</menu-item> <menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasError > 0">错误日志</menu-item>
<menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasWAF > 0">WAF日志</menu-item> <menu-item :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&day=' + day + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasWAF > 0">WAF日志</menu-item>
<menu-item :href="'/servers/logs/settings'" code="settings">设置</menu-item> <menu-item :href="'/servers/logs/settings'" code="settings">设置</menu-item>
</first-menu> </first-menu>
@@ -14,7 +14,16 @@
<input type="hidden" name="hasWAF" :value="hasWAF"/> <input type="hidden" name="hasWAF" :value="hasWAF"/>
<http-access-log-search-box :v-cluster-id="clusterId" :v-node-id="nodeId" :v-ip="ip" :v-domain="domain" :v-keyword="keyword"> <http-access-log-search-box :v-cluster-id="clusterId" :v-node-id="nodeId" :v-ip="ip" :v-domain="domain" :v-keyword="keyword">
<div class="ui field"> <div class="ui field">
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/> <div class="ui right labeled input">
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
<span class="ui label"></span>
</div>
</div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="hour" maxlength="2" style="width: 3.5em" v-model="hour"/>
<span class="ui label"></span>
</div>
</div> </div>
</http-access-log-search-box> </http-access-log-search-box>
</form> </form>
@@ -31,10 +40,10 @@
</table> </table>
<div v-if="accessLogs.length > 0"> <div v-if="accessLogs.length > 0">
<a :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" v-if="hasPrev">上一页</a> <a :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" v-if="hasPrev">上一页</a>
<span v-else class="disabled">上一页</span> <span v-else class="disabled">上一页</span>
<span class="disabled">&nbsp; | &nbsp;</span> <span class="disabled">&nbsp; | &nbsp;</span>
<a :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" v-if="hasMore">下一页</a> <a :href="path + '?clusterId=' + clusterId + '&nodeId=' + nodeId + '&serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" v-if="hasMore">下一页</a>
<span v-else class="disabled">下一页</span> <span v-else class="disabled">下一页</span>
<page-size-selector></page-size-selector> <page-size-selector></page-size-selector>

View File

@@ -5,9 +5,9 @@
<div class="right-box"> <div class="right-box">
<first-menu> <first-menu>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasError > 0">错误日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasError > 0">错误日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" :active="hasWAF > 0">WAF日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" :active="hasWAF > 0">WAF日志</menu-item>
</first-menu> </first-menu>
<form method="get" class="ui form small" :action="path"> <form method="get" class="ui form small" :action="path">
@@ -18,6 +18,12 @@
<div class="ui field"> <div class="ui field">
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/> <input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
</div> </div>
<div class="ui field">
<div class="ui right labeled input">
<input type="text" name="hour" maxlength="2" style="width: 3.5em" v-model="hour"/>
<span class="ui label"></span>
</div>
</div>
</http-access-log-search-box> </http-access-log-search-box>
</form> </form>
@@ -31,10 +37,10 @@
</table> </table>
<div v-if="accessLogs.length > 0"> <div v-if="accessLogs.length > 0">
<a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" v-if="hasPrev">上一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" v-if="hasPrev">上一页</a>
<span v-else class="disabled">上一页</span> <span v-else class="disabled">上一页</span>
<span class="disabled">&nbsp; | &nbsp;</span> <span class="disabled">&nbsp; | &nbsp;</span>
<a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&pageSize=' + pageSize" v-if="hasMore">下一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain + '&hour=' + hour + '&pageSize=' + pageSize" v-if="hasMore">下一页</a>
<span v-else class="disabled">下一页</span> <span v-else class="disabled">下一页</span>
<page-size-selector></page-size-selector> <page-size-selector></page-size-selector>
</div> </div>