今日提出的问题和bug的修改:

1.action字典
2.日志列显示规则,配置Id,action,发现时间,isp,私有字段,公有字段(公有字段顺序保持一致)
3.音视频日志:公共字段的Device,Direction,Nested address list,私有字段av_protocol,From
To Store IP,From To Store URL,To From Store IP,To From Store URL,在界面注释掉
4.其他日志的公共字段,Nested address list注释掉
5.DNS日志的私有字段,除了Qname,其他注释掉
6.proxy的日志,url放到isp后面
7.日志列表增加详情查看按钮
8.查询条件字段名和列名保持一致  entrance、protocol
9.列表数据entranceId从字典取
10.dns翻译:qtype、qclass、opcode、cname全大写,Recursion Desired -> Recursion
Desured;Available Recursion -> Recursion Available
11.错误提示中文
This commit is contained in:
chenjinsong
2018-08-02 20:41:51 +08:00
parent 5729016f93
commit e082080772
9 changed files with 135 additions and 70 deletions

View File

@@ -2,6 +2,7 @@ package com.nis.web.test;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -48,6 +49,7 @@ public class LogTest {
Page<NtcIpLog> data = fromJson.getData();
System.out.println(data.getPageNo());
List<NtcIpLog> list = data.getList();
NtcIpLog object = data.getList().get(0);
System.out.print(object.getsPort());
}

View File

@@ -582,11 +582,11 @@ sample_sign=Sample Sign
click_detail=Please click the "view details" button to send the detailed error message to the system Management clerk. Thank you!
return_lastpage=Return to the last page
show_detail=View details
hidden_detail=\u9690\u85CF\u4FE1\u606F\u4FE1\u606F
hidden_detail=Hide detail
notfound_page=Page does not exist
no_permission=Lack of authority
param_error=\u53C2\u6570\u6709\u8BEF,\u670D\u52A1\u5668\u65E0\u6CD5\u89E3\u6790.
request_service_failed=\u8BF7\u6C42\u670D\u52A1\u63A5\u53E3\u5931\u8D25
param_error=Param error,server can't analyze
request_service_failed=Request server failed
request_error=Request Error
av_voip_ip_title=Voip Ip
av_voip_account_title=Voip Account

View File

@@ -169,19 +169,19 @@
<th><spring:message code='cfg_id'/></th>
<th><spring:message code="action"/></th>
<th><spring:message code="found_time"/></th>
<th><spring:message code="entrance_id"/></th>
<th><spring:message code="entrance"/></th>
<%-- <th>ip<spring:message code="type"/></th> --%>
<%-- <th>ip<spring:message code="type"/></th>
<th><spring:message code="qr"/></th>
<th><spring:message code="rd"/></th>
<th><spring:message code="ra"/></th>
<th><spring:message code="rr"/></th>
<th><spring:message code="qtype"/></th>
<th><spring:message code="qclass"/></th>
<th><spring:message code="opcode"/></th>
<th><spring:message code="opcode"/></th> --%>
<th><spring:message code="qname"/></th>
<th><spring:message code="cname"/></th>
<%-- <th><spring:message code="dns_sub"/></th> --%>
<%-- <th><spring:message code="cname"/></th>
<th><spring:message code="dns_sub"/></th> --%>
<th><spring:message code="clj_ip"/></th>
<th><spring:message code="protocol"/></th>
@@ -193,7 +193,7 @@
<th><spring:message code="deviceid"/></th>
<th><spring:message code="direction"/></th>
<th><spring:message code="stream_type"/></th>
<th><spring:message code="nest_addr_list"/></th>
<%-- <th><spring:message code="nest_addr_list"/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -201,7 +201,9 @@
<tbody>
<c:forEach var="_log" items="${page.list }">
<tr>
<td>${_log.cfgId }</td>
<td>${_log.cfgId }
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq _log.action}">
@@ -210,13 +212,19 @@
</c:forEach>
</td>
<td>${_log.foundTime }</td>
<td>${_log.entranceId}</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<%-- <td>
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="ipType">
<c:if test="${ipType.itemCode eq _log.addrType}">${ipType.itemValue}</c:if>
</c:forEach>
</td> --%>
</td>
<td>
<c:forEach items="${fns:getDictList('DNS_QR')}" var="qr">
<c:if test="${qr.itemCode eq _log.qr}"><spring:message code="${qr.itemValue}"/></c:if>
@@ -245,10 +253,10 @@
<c:forEach items="${fns:getDictList('DNS_OPCODE')}" var="opcode">
<c:if test="${opcode.itemCode eq _log.opcode}">${opcode.itemValue}</c:if>
</c:forEach>
</td>
</td> --%>
<td title="${_log.qname }">${fns:abbr(_log.qname, 30)}</td>
<td>${_log.cname }</td>
<%-- <td>${_log.dnsSub }</td> --%>
<%-- <td>${_log.cname }</td>
<td>${_log.dnsSub }</td> --%>
<td>${_log.capIp }</td>
<td>${_log.transProto }</td>
@@ -276,7 +284,7 @@
<c:if test="${streamType.itemCode eq _log.streamDir}">${streamType.itemValue}</c:if>
</c:forEach>
</td>
<td>${_log.addrList }</td>
<%-- <td>${_log.addrList }</td> --%>
<td title="${_log.serverLocate}">${fns:abbr(_log.serverLocate,20)}</td>
<td title="${_log.clientLocate}">${fns:abbr(_log.clientLocate,20)}</td>
</tr>

View File

@@ -170,7 +170,7 @@
<th><spring:message code='cfg_id'/></th>
<th><spring:message code="action"/></th>
<th><spring:message code="found_time"/></th>
<th><spring:message code="entrance_id"/></th>
<th><spring:message code="entrance"/></th>
<th>URL</th>
<th><spring:message code="req_hdr_file"/></th>
@@ -188,7 +188,7 @@
<th><spring:message code="deviceid"/></th>
<th><spring:message code="direction"/></th>
<th><spring:message code="stream_type"/></th>
<th><spring:message code="nest_addr_list"/></th>
<%-- <th><spring:message code="nest_addr_list"/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -196,7 +196,9 @@
<tbody>
<c:forEach var="_log" items="${page.list }">
<tr>
<td>${_log.cfgId }</td>
<td>${_log.cfgId }
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq _log.action}">
@@ -205,7 +207,13 @@
</c:forEach>
</td>
<td>${_log.foundTime }</td>
<td>${_log.entranceId}</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td title="${_log.url }">${fns:abbr(_log.url, 30)}</td>
<td>${_log.reqHdrFile}</td>
@@ -239,7 +247,7 @@
<c:if test="${streamType.itemCode eq _log.streamDir}">${streamType.itemValue}</c:if>
</c:forEach>
</td>
<td>${_log.addrList }</td>
<%-- <td>${_log.addrList }</td> --%>
<td title="${_log.serverLocate}">${fns:abbr(_log.serverLocate,20)}</td>
<td title="${_log.clientLocate}">${fns:abbr(_log.clientLocate,20)}</td>
</tr>

View File

@@ -161,7 +161,7 @@
<th><spring:message code="cfg_id"/></th>
<th><spring:message code="action"/></th>
<th><spring:message code="found_time"/></th>
<th><spring:message code="entrance_id"/></th>
<th><spring:message code="entrance"/></th>
<th><spring:message code="clj_ip"/></th>
<th><spring:message code="protocol"/></th>
<th><spring:message code='addr_type'/></th>
@@ -172,7 +172,7 @@
<th><spring:message code="deviceid"/></th>
<th><spring:message code="direction"/></th>
<th><spring:message code="stream_type"/></th>
<th><spring:message code="nest_addr_list"/></th>
<%-- <th><spring:message code="nest_addr_list"/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -191,7 +191,13 @@
</c:forEach>
</td>
<td>${_log.foundTime }</td>
<td>${_log.entranceId }</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${_log.capIp }</td>
<td>${_log.transProto }</td>
<td>
@@ -218,7 +224,7 @@
<c:if test="${streamType.itemCode eq _log.streamDir}">${streamType.itemValue}</c:if>
</c:forEach>
</td>
<td>${_log.addrList }</td>
<%-- <td>${_log.addrList }</td> --%>
<td title="${_log.serverLocate}">${fns:abbr(_log.serverLocate,20)}</td>
<td title="${_log.clientLocate}">${fns:abbr(_log.clientLocate,20)}</td>
</tr>

View File

@@ -172,7 +172,7 @@ $(document).ready(function(){
<th><spring:message code='cfg_id'/></th>
<th><spring:message code="action"/></th>
<th><spring:message code='found_time'/></th>
<th><spring:message code='entrance_id'/></th>
<th><spring:message code='entrance'/></th>
<th><spring:message code='pid'/></th>
<th><spring:message code='access_url'/></th>
@@ -180,7 +180,7 @@ $(document).ready(function(){
<th><spring:message code='refer'/></th>
<th><spring:message code='harm_level'/></th>
<th><spring:message code='fd_type'/></th>
<th><spring:message code='av_protocol'/></th>
<%-- <th><spring:message code='av_protocol'/></th> --%>
<th><spring:message code='clj_ip'/></th>
<th><spring:message code='protocol'/></th>
@@ -189,10 +189,10 @@ $(document).ready(function(){
<th><spring:message code='clientip'/></th>
<th><spring:message code='serverport'/></th>
<th><spring:message code='clientport'/></th>
<th><spring:message code='deviceid'/></th>
<th><spring:message code='direct'/></th>
<%-- <th><spring:message code='deviceid'/></th>
<th><spring:message code='direct'/></th> --%>
<th><spring:message code='stream_type'/></th>
<th><spring:message code='nest_addr_list'/></th>
<%-- <th><spring:message code='nest_addr_list'/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -200,13 +200,24 @@ $(document).ready(function(){
<tbody>
<c:forEach items="${page.list}" var="log" varStatus="status" step="1">
<tr>
<td>${log.cfgId}<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a></td>
<td>${log.cfgId}
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>
<c:if test="${log.action eq 16 }"><spring:message code="action_reject"/></c:if>
<c:if test="${log.action eq 1 }"><spring:message code="action_monit"/></c:if>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq log.action}">
<spring:message code="${dict.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.foundTime}</td>
<td>${log.entranceId}</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.pid}</td>
<td>
@@ -243,7 +254,7 @@ $(document).ready(function(){
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
</td>
<td>${log.protocol}</td>
<%-- <td>${log.protocol}</td> --%>
<td>${log.capIp}</td>
<td>${log.transProto}</td>
@@ -256,18 +267,18 @@ $(document).ready(function(){
<td>${log.sIp}</td>
<td>${log.dPort}</td>
<td>${log.sPort}</td>
<td>${log.deviceId}</td>
<%-- <td>${log.deviceId}</td>
<td>
<c:forEach items="${fns:getDictList('DIRECTION')}" var="dic">
<c:if test="${log.direction==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
</td> --%>
<td>
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="dic">
<c:if test="${log.streamDir==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
<td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td>
<%-- <td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td> --%>
<td>${log.serverLocate}</td>
<td>${log.clientLocate}</td>
</tr>

View File

@@ -172,7 +172,7 @@ $(document).ready(function(){
<th><spring:message code='cfg_id'/></th>
<th><spring:message code="action"/></th>
<th><spring:message code='found_time'/></th>
<th><spring:message code='entrance_id'/></th>
<th><spring:message code='entrance'/></th>
<th><spring:message code='pid'/></th>
<th><spring:message code='access_url'/></th>
@@ -180,7 +180,7 @@ $(document).ready(function(){
<th><spring:message code='refer'/></th>
<th><spring:message code='harm_level'/></th>
<th><spring:message code='fd_type'/></th>
<th><spring:message code='av_protocol'/></th>
<%-- <th><spring:message code='av_protocol'/></th> --%>
<th><spring:message code='clj_ip'/></th>
<th><spring:message code='protocol'/></th>
@@ -189,10 +189,10 @@ $(document).ready(function(){
<th><spring:message code='clientip'/></th>
<th><spring:message code='serverport'/></th>
<th><spring:message code='clientport'/></th>
<th><spring:message code='deviceid'/></th>
<th><spring:message code='direct'/></th>
<%-- <th><spring:message code='deviceid'/></th>
<th><spring:message code='direct'/></th> --%>
<th><spring:message code='stream_type'/></th>
<th><spring:message code='nest_addr_list'/></th>
<%-- <th><spring:message code='nest_addr_list'/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -200,13 +200,24 @@ $(document).ready(function(){
<tbody>
<c:forEach items="${page.list}" var="log" varStatus="status" step="1">
<tr>
<td>${log.cfgId}<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a></td>
<td>${log.cfgId}
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>
<c:if test="${log.action eq 16 }"><spring:message code="action_reject"/></c:if>
<c:if test="${log.action eq 1 }"><spring:message code="action_monit"/></c:if>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq log.action}">
<spring:message code="${dict.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.foundTime}</td>
<td>${log.entranceId}</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.pid}</td>
<td>
@@ -243,7 +254,7 @@ $(document).ready(function(){
<c:if test="${log.fdType eq 1 }"><spring:message code="static_cfg_block"/></c:if>
<c:if test="${log.fdType eq 2 }"><spring:message code="first_hit"/></c:if>
</td>
<td>${log.protocol}</td>
<%-- <td>${log.protocol}</td> --%>
<td>${log.capIp}</td>
<td>${log.transProto}</td>
@@ -256,18 +267,18 @@ $(document).ready(function(){
<td>${log.sIp}</td>
<td>${log.dPort}</td>
<td>${log.sPort}</td>
<td>${log.deviceId}</td>
<%-- <td>${log.deviceId}</td>
<td>
<c:forEach items="${fns:getDictList('DIRECTION')}" var="dic">
<c:if test="${log.direction==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
</td> --%>
<td>
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="dic">
<c:if test="${log.streamDir==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
<td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td>
<%-- <td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td> --%>
<td>${log.serverLocate}</td>
<td>${log.clientLocate}</td>
</tr>

View File

@@ -172,7 +172,7 @@ $(document).ready(function(){
<th><spring:message code='cfg_id'/></th>
<th><spring:message code="action"/></th>
<th><spring:message code='found_time'/></th>
<th><spring:message code='entrance_id'/></th>
<th><spring:message code='entrance'/></th>
<th><spring:message code='duation'/></th>
<th><spring:message code='voip_protocol'/></th>
@@ -199,7 +199,7 @@ $(document).ready(function(){
<th><spring:message code='deviceid'/></th>
<th><spring:message code='direct'/></th>
<th><spring:message code='stream_type'/></th>
<th><spring:message code='nest_addr_list'/></th>
<%-- <th><spring:message code='nest_addr_list'/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -207,13 +207,24 @@ $(document).ready(function(){
<tbody>
<c:forEach items="${page.list}" var="log" varStatus="status" step="1">
<tr>
<td>${log.cfgId}<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a></td>
<td>${log.cfgId}
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>
<c:if test="${log.action eq 16 }"><spring:message code="action_reject"/></c:if>
<c:if test="${log.action eq 1 }"><spring:message code="action_monit"/></c:if>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq log.action}">
<spring:message code="${dict.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.foundTime}</td>
<td>${log.entranceId}</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td>${log.duation}</td>
<td>${log.voipProtocol}</td>
@@ -221,10 +232,10 @@ $(document).ready(function(){
<td title="${fns:escapeHtml(log.calledAccount)}">${fn:substring(log.calledAccount,0,30) }</td>
<td title="${fns:escapeHtml(log.callingNumber)}">${fn:substring(log.callingNumber,0,30) }</td>
<td title="${fns:escapeHtml(log.calledNumber)}">${fn:substring(log.calledNumber,0,30) }</td>
<td>${log.fromToStoreIp}</td>
<%-- <td>${log.fromToStoreIp}</td>
<td title="${fns:escapeHtml(log.fromToStoreUrl)}">${fn:substring(log.fromToStoreUrl,0,30) }</td>
<td>${log.toFromStoreIp}</td>
<td title="${fns:escapeHtml(log.toFromStoreUrl)}">${fn:substring(log.toFromStoreUrl,0,30) }</td>
<td title="${fns:escapeHtml(log.toFromStoreUrl)}">${fn:substring(log.toFromStoreUrl,0,30) }</td> --%>
<td>${log.pid}</td>
<td>
<c:if test="${fn:startsWith(log.logUri, 'http')}">
@@ -256,18 +267,18 @@ $(document).ready(function(){
<td>${log.sIp}</td>
<td>${log.dPort}</td>
<td>${log.sPort}</td>
<td>${log.deviceId}</td>
<%-- <td>${log.deviceId}</td>
<td>
<c:forEach items="${fns:getDictList('DIRECTION')}" var="dic">
<c:if test="${log.direction==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
</td> --%>
<td>
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="dic">
<c:if test="${log.streamDir==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
</c:forEach>
</td>
<td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td>
<%-- <td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td> --%>
<td>${log.serverLocate}</td>
<td>${log.clientLocate}</td>
</tr>

View File

@@ -150,18 +150,18 @@
<tr>
<th><spring:message code="cfg_id"/></th>
<th><spring:message code="found_time"/></th>
<th><spring:message code="entrance_id"/></th>
<th><spring:message code="entrance"/></th>
<th>URL</th>
<th><spring:message code="clj_ip"/></th>
<th><spring:message code="protocol"/></th>
<th><spring:message code="server_ip"/></th>
<th><spring:message code="client_ip"/></th>
<th><spring:message code="server_port"/></th>
<th><spring:message code="client_port"/></th>
<th>url</th>
<th><spring:message code="deviceid"/></th>
<th><spring:message code="direction"/></th>
<th><spring:message code="stream_type"/></th>
<th><spring:message code="nest_addr_list"/></th>
<%-- <th><spring:message code="nest_addr_list"/></th> --%>
<th><spring:message code='server_locate'/></th>
<th><spring:message code='client_locate'/></th>
</tr>
@@ -169,16 +169,24 @@
<tbody>
<c:forEach var="_log" items="${page.list }" varStatus="status">
<tr>
<td>${_log.cfgId }</td>
<td>${_log.cfgId }
<a href="javascript:void(0)" name="viewLogInfo"><i class="icon-book-open"></i></a>
</td>
<td>${_log.foundTime }</td>
<td>${_log.entranceId }</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq _log.entranceId}">
<spring:message code="${dic.itemValue}"/>
</c:if>
</c:forEach>
</td>
<td title="${fns:escapeHtml(_log.url)}">${fns:stringFormat(_log.url,30)}</td>
<td>${_log.capIp }</td>
<td>${_log.transProto }</td>
<td>${_log.dIp }</td>
<td>${_log.sIp }</td>
<td>${_log.dPort }</td>
<td>${_log.sPort }</td>
<td title="${fns:escapeHtml(_log.url)}">${fns:stringFormat(_log.url,30)}</td>
<td>
<c:forEach items="${fns:getDictList('DEVICE')}" var="device">
<c:if test="${device.itemCode eq _log.deviceId}"><spring:message code="${device.itemValue}"/></c:if>
@@ -194,7 +202,7 @@
<c:if test="${streamType.itemCode eq _log.streamDir}">${streamType.itemValue}</c:if>
</c:forEach>
</td>
<td title="${fns:escapeHtml(_log.addrList)}">${fns:stringFormat(_log.addrList,30)}</td>
<%-- <td title="${fns:escapeHtml(_log.addrList)}">${fns:stringFormat(_log.addrList,30)}</td> --%>
<td title="${_log.serverLocate}">${fns:abbr(_log.serverLocate,20)}</td>
<td title="${_log.clientLocate}">${fns:abbr(_log.clientLocate,20)}</td>
</tr>