优化日志记录性能
This commit is contained in:
@@ -108,42 +108,50 @@ public class HttpLogFilter extends BaseFilter implements Ordered, BaseParams {
|
||||
// 获取请求日志节点
|
||||
LogTrack logTrack = LogTrackHolder.get();
|
||||
|
||||
// 包装请求和响应
|
||||
// 包装请求
|
||||
ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request, DEFAULT_CACHE_LIMIT);
|
||||
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
|
||||
|
||||
// 处理请求
|
||||
filterChain.doFilter(requestWrapper, responseWrapper);
|
||||
|
||||
// 获取请求体数据
|
||||
requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray()));
|
||||
// 记录请求日志
|
||||
saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog);
|
||||
|
||||
// 获取响应头信息
|
||||
JSONObject responseHeaders = getResponseHeaders(responseWrapper);
|
||||
// 获取响应体数据
|
||||
Object respData;
|
||||
// 是否忽略响应体
|
||||
if (PathPatternUtils.match(RESP_WHITE_LIST, uri)) {
|
||||
respData = "ignore";
|
||||
// 处理请求
|
||||
filterChain.doFilter(requestWrapper, response);
|
||||
// 获取请求体数据
|
||||
requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray()));
|
||||
// 记录请求日志
|
||||
saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog);
|
||||
// 停止计时
|
||||
sw.stop();
|
||||
// 保存日志
|
||||
JSONObject responseLog = JSONObject.of(
|
||||
"responseBody", "ignore",
|
||||
"execTime", sw.getTotalTimeMillis()
|
||||
);
|
||||
saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog);
|
||||
} else {
|
||||
// 获取响应内容
|
||||
respData = getContent(responseWrapper.getContentAsByteArray());
|
||||
// 包装响应
|
||||
ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
|
||||
// 处理请求
|
||||
filterChain.doFilter(requestWrapper, responseWrapper);
|
||||
// 获取请求体数据
|
||||
requestLog.put("requestBody", getContent(requestWrapper.getContentAsByteArray()));
|
||||
// 记录请求日志
|
||||
saveLog(logTrack, LogBusBaseType.HTTP_REQUEST, requestLog);
|
||||
// 获取响应头信息
|
||||
JSONObject responseHeaders = getResponseHeaders(responseWrapper);
|
||||
// 获取响应体数据
|
||||
Object respData = getContent(responseWrapper.getContentAsByteArray());
|
||||
// 将内容复制回原始响应
|
||||
responseWrapper.copyBodyToResponse();
|
||||
// 停止计时
|
||||
sw.stop();
|
||||
// 保存日志
|
||||
JSONObject responseLog = JSONObject.of(
|
||||
"headers", responseHeaders,
|
||||
"responseBody", respData,
|
||||
"execTime", sw.getTotalTimeMillis()
|
||||
);
|
||||
saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog);
|
||||
}
|
||||
|
||||
// 将内容复制回原始响应
|
||||
responseWrapper.copyBodyToResponse();
|
||||
|
||||
// 停止计时
|
||||
sw.stop();
|
||||
|
||||
// 保存日志
|
||||
JSONObject responseLog = JSONObject.of(
|
||||
"headers", responseHeaders,
|
||||
"responseBody", respData,
|
||||
"execTime", sw.getTotalTimeMillis()
|
||||
);
|
||||
saveLog(LogTrackHolder.get(), LogBusBaseType.HTTP_RESPONSE, responseLog);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user