Skip to content

Commit

Permalink
fix(log): 修复接口耗时统计始终为0ms问题
Browse files Browse the repository at this point in the history
  • Loading branch information
Time-w authored and Charles7c committed Sep 3, 2024
1 parent 16b6e9b commit 4caf0a0
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import top.continew.starter.log.core.enums.Include;

import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.Set;
Expand Down Expand Up @@ -78,7 +77,7 @@ public LogRecord(Instant timestamp, LogRequest request, LogResponse response, Du
* @return 日志记录器
*/
public static Started start(RecordableHttpRequest request) {
return start(Clock.systemUTC(), request);
return start(Instant.now(), request);
}

/**
Expand All @@ -88,7 +87,7 @@ public static Started start(RecordableHttpRequest request) {
* @param request 请求信息
* @return 日志记录器
*/
public static Started start(Clock timestamp, RecordableHttpRequest request) {
public static Started start(Instant timestamp, RecordableHttpRequest request) {
return new Started(timestamp, request);
}

Expand All @@ -101,8 +100,8 @@ public static final class Started {

private final RecordableHttpRequest request;

private Started(Clock clock, RecordableHttpRequest request) {
this.timestamp = Instant.now(clock);
private Started(Instant timestamp, RecordableHttpRequest request) {
this.timestamp = timestamp;
this.request = request;
}

Expand All @@ -114,10 +113,10 @@ private Started(Clock clock, RecordableHttpRequest request) {
* @param includes 包含信息
* @return 日志记录
*/
public LogRecord finish(Clock clock, RecordableHttpResponse response, Set<Include> includes) {
public LogRecord finish(Instant timestamp, RecordableHttpResponse response, Set<Include> includes) {
LogRequest logRequest = new LogRequest(this.request, includes);
LogResponse logResponse = new LogResponse(response, includes);
Duration duration = Duration.between(this.timestamp, Instant.now(clock));
Duration duration = Duration.between(this.timestamp, timestamp);
return new LogRecord(this.timestamp, logRequest, logResponse, duration);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import top.continew.starter.log.core.model.LogRecord;
import top.continew.starter.log.interceptor.autoconfigure.LogProperties;

import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.util.HashSet;
Expand All @@ -51,7 +50,7 @@ public class LogInterceptor implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(LogInterceptor.class);
private final LogDao logDao;
private final LogProperties logProperties;
private final TransmittableThreadLocal<Clock> timeTtl = new TransmittableThreadLocal<>();
private final TransmittableThreadLocal<Instant> timeTtl = new TransmittableThreadLocal<>();
private final TransmittableThreadLocal<LogRecord.Started> logTtl = new TransmittableThreadLocal<>();

public LogInterceptor(LogDao logDao, LogProperties logProperties) {
Expand All @@ -63,7 +62,7 @@ public LogInterceptor(LogDao logDao, LogProperties logProperties) {
public boolean preHandle(@NonNull HttpServletRequest request,
@NonNull HttpServletResponse response,
@NonNull Object handler) {
Clock startTime = Clock.systemUTC();
Instant startTime = Instant.now();
if (Boolean.TRUE.equals(logProperties.getIsPrint())) {
log.info("[{}] {}", request.getMethod(), request.getRequestURI());
timeTtl.set(startTime);
Expand All @@ -81,9 +80,9 @@ public void afterCompletion(@NonNull HttpServletRequest request,
@NonNull Object handler,
Exception e) {
try {
Clock endTime = Clock.systemUTC();
Instant endTime = Instant.now();
if (Boolean.TRUE.equals(logProperties.getIsPrint())) {
Duration timeTaken = Duration.between(Instant.now(timeTtl.get()), Instant.now(endTime));
Duration timeTaken = Duration.between(timeTtl.get(), endTime);
log.info("[{}] {} {} {}ms", request.getMethod(), request.getRequestURI(), response
.getStatus(), timeTaken.toMillis());
}
Expand Down

0 comments on commit 4caf0a0

Please sign in to comment.