revert(log/httptrace-pro): 请求 URI => 请求 URL,记录协议、域名信息(保持尽可能完整)

This commit is contained in:
2023-12-25 19:50:52 +08:00
parent 0a0d022586
commit e9f01d05c9
4 changed files with 17 additions and 18 deletions

View File

@@ -43,9 +43,9 @@ public class LogRequest {
private String method; private String method;
/** /**
* 请求 URI * 请求 URL
*/ */
private URI uri; private URI url;
/** /**
* IP * IP
@@ -84,7 +84,7 @@ public class LogRequest {
public LogRequest(RecordableHttpRequest request, Set<Include> includes) { public LogRequest(RecordableHttpRequest request, Set<Include> includes) {
this.method = request.getMethod(); this.method = request.getMethod();
this.uri = request.getUri(); this.url = request.getUrl();
this.ip = request.getIp(); this.ip = request.getIp();
this.headers = (includes.contains(Include.REQUEST_HEADERS)) ? request.getHeaders() : null; this.headers = (includes.contains(Include.REQUEST_HEADERS)) ? request.getHeaders() : null;
if (includes.contains(Include.REQUEST_BODY)) { if (includes.contains(Include.REQUEST_BODY)) {

View File

@@ -39,11 +39,11 @@ public interface RecordableHttpRequest {
String getMethod(); String getMethod();
/** /**
* 获取 URI * 获取 URL
* *
* @return URI * @return URL
*/ */
URI getUri(); URI getUrl();
/** /**
* 获取 IP * 获取 IP

View File

@@ -31,7 +31,6 @@ import top.charles7c.continew.starter.log.common.annotation.Log;
import top.charles7c.continew.starter.log.common.dao.LogDao; import top.charles7c.continew.starter.log.common.dao.LogDao;
import top.charles7c.continew.starter.log.common.enums.Include; import top.charles7c.continew.starter.log.common.enums.Include;
import top.charles7c.continew.starter.log.common.model.LogRecord; import top.charles7c.continew.starter.log.common.model.LogRecord;
import top.charles7c.continew.starter.log.common.model.LogRequest;
import top.charles7c.continew.starter.log.common.model.LogResponse; import top.charles7c.continew.starter.log.common.model.LogResponse;
import top.charles7c.continew.starter.log.httptracepro.autoconfigure.LogProperties; import top.charles7c.continew.starter.log.httptracepro.autoconfigure.LogProperties;
@@ -57,11 +56,10 @@ public class LogInterceptor implements HandlerInterceptor {
@NonNull Object handler) { @NonNull Object handler) {
Clock timestamp = Clock.systemUTC(); Clock timestamp = Clock.systemUTC();
if (this.isRequestRecord(handler)) { if (this.isRequestRecord(handler)) {
RecordableServletHttpRequest sourceRequest = new RecordableServletHttpRequest(request);
if (Boolean.TRUE.equals(properties.getIsPrint())) { if (Boolean.TRUE.equals(properties.getIsPrint())) {
log.info("[{}] {}", sourceRequest.getMethod(), sourceRequest.getUri()); log.info("[{}] {}", request.getMethod(), request.getRequestURI());
} }
LogRecord.Started startedLogRecord = LogRecord.start(timestamp, sourceRequest); LogRecord.Started startedLogRecord = LogRecord.start(timestamp, new RecordableServletHttpRequest(request));
timestampTtl.set(startedLogRecord); timestampTtl.set(startedLogRecord);
} }
return true; return true;
@@ -88,9 +86,8 @@ public class LogInterceptor implements HandlerInterceptor {
this.logModule(finishedLogRecord, handlerMethod); this.logModule(finishedLogRecord, handlerMethod);
} }
if (Boolean.TRUE.equals(properties.getIsPrint())) { if (Boolean.TRUE.equals(properties.getIsPrint())) {
LogRequest logRequest = finishedLogRecord.getRequest();
LogResponse logResponse = finishedLogRecord.getResponse(); LogResponse logResponse = finishedLogRecord.getResponse();
log.info("[{}] {} {} {}ms", logRequest.getMethod(), logRequest.getUri(), logResponse.getStatus(), finishedLogRecord.getTimeTaken().toMillis()); log.info("[{}] {} {} {}ms", request.getMethod(), request.getRequestURI(), logResponse.getStatus(), finishedLogRecord.getTimeTaken().toMillis());
} }
dao.add(finishedLogRecord); dao.add(finishedLogRecord);
} catch (Exception ex) { } catch (Exception ex) {

View File

@@ -51,16 +51,18 @@ public final class RecordableServletHttpRequest implements RecordableHttpRequest
} }
@Override @Override
public URI getUri() { public URI getUrl() {
String queryString = request.getQueryString(); String queryString = request.getQueryString();
if (StrUtil.isBlank(queryString)) { if (StrUtil.isBlank(queryString)) {
return URI.create(request.getRequestURI()); return URI.create(request.getRequestURL().toString());
} }
try { try {
return new URI(this.appendQueryString(queryString)); StringBuffer urlBuffer = this.appendQueryString(queryString);
return new URI(urlBuffer.toString());
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
String encoded = UriUtils.encodeQuery(queryString, StandardCharsets.UTF_8); String encoded = UriUtils.encodeQuery(queryString, StandardCharsets.UTF_8);
return URI.create(this.appendQueryString(encoded)); StringBuffer urlBuffer = this.appendQueryString(encoded);
return URI.create(urlBuffer.toString());
} }
} }
@@ -91,7 +93,7 @@ public final class RecordableServletHttpRequest implements RecordableHttpRequest
: Collections.unmodifiableMap(request.getParameterMap()); : Collections.unmodifiableMap(request.getParameterMap());
} }
private String appendQueryString(String queryString) { private StringBuffer appendQueryString(String queryString) {
return request.getRequestURI() + StringConstants.QUESTION_MARK + queryString; return request.getRequestURL().append(StringConstants.QUESTION_MARK).append(queryString);
} }
} }