fix(log/httptrace-pro): 修复 IP 配置解析错误,并缩小日志异常影响范围

This commit is contained in:
2023-12-21 20:57:33 +08:00
parent e0e5944b45
commit 2a70a9a252
3 changed files with 26 additions and 15 deletions

View File

@@ -82,8 +82,8 @@ public class ProjectProperties {
public static final boolean IP_ADDR_LOCAL_PARSE_ENABLED;
static {
String underlineCaseProperty = SpringUtil.getProperty("ip-addr-local-parse-enabled");
String camelCaseProperty = SpringUtil.getProperty("ipAddrLocalParseEnabled");
String underlineCaseProperty = SpringUtil.getProperty("project.ip-addr-local-parse-enabled");
String camelCaseProperty = SpringUtil.getProperty("project.ipAddrLocalParseEnabled");
IP_ADDR_LOCAL_PARSE_ENABLED = Convert.toBool(underlineCaseProperty, false) || Convert.toBool(camelCaseProperty, false);
}

View File

@@ -16,7 +16,9 @@
package top.charles7c.continew.starter.core.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.net.NetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.http.HtmlUtil;
import cn.hutool.http.HttpUtil;
@@ -28,6 +30,9 @@ import lombok.extern.slf4j.Slf4j;
import net.dreamlu.mica.ip2region.core.Ip2regionSearcher;
import net.dreamlu.mica.ip2region.core.IpInfo;
import top.charles7c.continew.starter.core.autoconfigure.project.ProjectProperties;
import top.charles7c.continew.starter.core.constant.StringConstants;
import java.util.Set;
/**
* IP 工具类
@@ -86,7 +91,9 @@ public class IpUtils {
Ip2regionSearcher ip2regionSearcher = SpringUtil.getBean(Ip2regionSearcher.class);
IpInfo ipInfo = ip2regionSearcher.memorySearch(ip);
if (null != ipInfo) {
return ipInfo.getAddress();
Set<String> regionSet = CollUtil.newLinkedHashSet(ipInfo.getAddress(), ipInfo.getIsp());
regionSet.removeIf(StrUtil::isBlank);
return String.join(StringConstants.SPACE, regionSet);
}
return null;
}

View File

@@ -69,6 +69,7 @@ public class LogInterceptor implements HandlerInterceptor {
timestampTtl.remove();
Set<Include> includeSet = properties.getInclude();
RecordableServletHttpRequest sourceRequest = new RecordableServletHttpRequest(request);
try {
LogRecord.Started startedLogRecord = LogRecord.start(timestamp, sourceRequest);
RecordableServletHttpResponse sourceResponse = new RecordableServletHttpResponse(response, response.getStatus());
LogRecord finishedLogRecord = startedLogRecord.finish(sourceResponse, includeSet);
@@ -82,6 +83,9 @@ public class LogInterceptor implements HandlerInterceptor {
this.logModule(finishedLogRecord, handlerMethod);
}
dao.add(finishedLogRecord);
} catch (Exception ex) {
log.error("Logging http log occurred an error: {}.", ex.getMessage(), ex);
}
}
/**