Java 如何在Play框架中添加请求过滤器?

Java 如何在Play框架中添加请求过滤器?,java,logging,playframework,Java,Logging,Playframework,我想在我的日志中显示每个请求或操作可能花费的时间 我将这个类添加到我的控制器中,但在我的日志中什么也没有发生!!!! 我应该怎么做才能在日志中显示请求时间 先谢谢你。 import java.util.concurrent.CompletionStage; 导入java.util.function.function; 导入javax.inject.inject; 导入akka.stream.Materializer; 导入play.Logger; 导入play.mvc.*; 公共类Loggin

我想在我的日志中显示每个请求或操作可能花费的时间

我将这个类添加到我的控制器中,但在我的日志中什么也没有发生!!!! 我应该怎么做才能在日志中显示请求时间

先谢谢你。

import java.util.concurrent.CompletionStage;
导入java.util.function.function;
导入javax.inject.inject;
导入akka.stream.Materializer;
导入play.Logger;
导入play.mvc.*;
公共类LoggingFilter扩展了筛选器{
@注入
公共日志过滤器(物化器垫){
超级(mat);
}
@凌驾
公开完成阶段申请(
函数nextFilter,
Http.RequestHeader(请求头){
long startTime=System.currentTimeMillis();
返回nextFilter.apply(requestHeader)。然后返回apply(结果->{
long-endTime=System.currentTimeMillis();
长请求时间=结束时间-开始时间;
info(“{}{}取了{}毫秒并返回{}”,
requestHeader.method()、requestHeader.uri()、requestTime、result.status();
返回结果.withHeader(“请求时间”,“请求时间”);
});
}
}

您需要定义过滤链-请参阅以获取官方指南

import filters.LoggingFilter;
import play.http.DefaultHttpFilters;
import javax.inject.Inject;

public class Filters extends DefaultHttpFilters {
  @Inject
  public Filters(LoggingFilter logging) {
    super(logging);
  }
}
如果
过滤器
类位于根包中,则无需更改
应用程序.conf中的任何内容。对于标准播放包结构,根包与
控制器
视图
处于同一级别,并且
过滤器
类本身将不会将
作为源文件的第一行

+- controllers
| \ App.java
+- filters
| \ LoggingFilter.java
- Filters.java
如果您在其他地方有它,比如说,
com.example.filters
,您需要在
application.conf
中声明它

play.http.filters=com.example.Filters

您是否已将过滤器添加到过滤器链中?见鬼罗曼,你说的过滤链是什么意思?我是否必须在第一个类旁边的控制器中添加该类?您是否在配置中配置了过滤器?请遵循@Roman提供的链接,该链接显示了组装所有过滤器并进行配置的内容。这是链条。嗨,teams play框架提供的电子应用程序对我来说有点高级,超过了我的技能:以下是我采取的步骤:1-我在我的控制器中添加了一个新类,并将其命名为:LoggingFilter.java 2-我在application.conf:play.http.filters=com.LoggingFilter中添加了这个应用程序。我的日志仍然没有显示每个操作或操作的请求时间页面请求!请原谅我的弱技能。有人有想法吗?你好,史蒂夫,你说的根包是什么意思?你是说:控制器?请允许我问另一个问题,我是否只需要在controllers.java中添加您的操作而不是我的操作?非常感谢您的帮助,我已经编辑了答案以显示根包。我不知道你所说的controllers.java.Oh好的,这是一个名为filters的文件夹,它的位置是:/app/filters我真是个傻瓜女孩哈哈哈好的我会试试看application.log是否会通过动作或请求来显示时间我会告诉你;)真的非常感谢并原谅我对Java所知甚少。根包是
/app/
,而不是
/app/filters
/app/filters
是一个用于保存自定义过滤器的软件包。我尝试过,但没有成功:我遇到了这个错误:有什么想法吗!!!复制步骤:1-我在根(/app)中添加了一个名为:Filters.java的类2-我在这个类中填充了您的内容=>Error
play.http.filters=com.example.Filters