모든 요청이나 조치가 필요한 시간을 내 기록에 표시하고 싶습니다.Play 프레임 워크에서 요청 필터를 추가하는 방법은 무엇입니까?
이 클래스를 컨트롤러에 추가했지만 로그에 아무 것도 나타나지 않습니다. !!!! 로그에 요청 시간을 표시하려면 어떻게해야합니까?
미리 감사드립니다. 공식 가이드에 대한 this section of documentation를 참조 - Reference of Class
import java.util.concurrent.CompletionStage;
import java.util.function.Function;
import javax.inject.Inject;
import akka.stream.Materializer;
import play.Logger;
import play.mvc.*;
public class LoggingFilter extends Filter {
@Inject
public LoggingFilter(Materializer mat) {
super(mat);
}
@Override
public CompletionStage<Result> apply(
Function<Http.RequestHeader, CompletionStage<Result>> nextFilter,
Http.RequestHeader requestHeader) {
long startTime = System.currentTimeMillis();
return nextFilter.apply(requestHeader).thenApply(result -> {
long endTime = System.currentTimeMillis();
long requestTime = endTime - startTime;
Logger.info("{} {} took {}ms and returned {}",
requestHeader.method(), requestHeader.uri(), requestTime, result.status());
return result.withHeader("Request-Time", "" + requestTime);
});
}
}
필터를 필터 체인에 추가 했습니까? https://www.playframework.com/documentation/2.5.x/JavaHttpFilters#Using-filters – Roman
Hell Roman, 필터 체인이란 무엇입니까? 컨트롤러의 첫 번째 클래스 옆에이 클래스를 추가해야합니까? – user3761024
구성에 필터를 구성 했습니까? @Roman에서 제공하는 링크를 따라 가십시오. @Roman은 모든 필터를 조립하고 구성된 것을 보여줍니다. 이것이 사슬입니다. – rethab