当前位置: 首页 > 知识库问答 >
问题:

Play2.5.x中是否有用于捕获自定义日志记录的请求和响应的插件?

长孙德惠
2023-03-14

共有1个答案

汪庆
2023-03-14

您可以想象Playframework将请求作为管道工作。

筛选器是记录请求的合适位置,但是,正如您所发现的,它没有访问主体的权限。这主要是因为在这个阶段,主体没有被解析。过滤器只需通过报头就可以拒绝不合适的请求,而不需要浪费资源来解析主体。这是过滤器的主要思想。

管道中的下一个阶段是操作。如果您需要对请求的主体做一些事情,那么您需要使用actions组合。不幸的是,您将需要用您的复合操作包装\replace每个操作。

def logging[A](action: Action[A])= Action.async(action.parser) { request =>
  Logger.info("Calling action")
  action(request)
}

object LoggingAction extends ActionBuilder[Request] {
  def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
    block(request)
  }
  override def composeAction[A](action: Action[A]) = new Logging(action)
}
def index = LoggingAction {
  Ok("Hello World")
}

def index = Logging {
  Action {
    Ok("Hello World")
  }
}
 类似资料:
  • 使用Grails 4构建一个新的API,我希望可以选择记录完整的请求(标头、方法、内容等)。我可以在Interceptor中看到请求,但是内容只能读取一次(使用),所以在Interceptor中读取它会阻止内容在Controller中可用。 在堆栈溢出中已经有一些类似的问题,通过使用Grails过滤器来解决这个需求。 我不想走这条路的一个原因是,根据Grails文档,过滤器现在被认为是不建议使用的

  • 我正在使用改造2.x,我想记录请求和响应的标头和正文。 这是我正在做的,我的问题是请求的标题没有被记录在Android Monitor中,但其余的一切都被记录了。 Gradle版本 使用RC1和3.0.1由于错误问题报告错误链接

  • 我的服务界面如下所示。 我希望保留在接口级别定义的注释,而不是方法实现。有办法得到这份工作吗?

  • 将PostSharp用于C#应用程序,我有以下场景: Namespace_ACustomLoggingMethod Namespace_B.DoThings thingMethod(实际上是几种不同的方法) DoMomthingMethod调用CustomLoggingMethod,它以所需的格式创建日志条目并且运行良好。正如预期的那样,日志条目将源记录为CustomLoggingMethod,我

  • 我在我的反应应用程序中有一个axios请求,为此我遵循axios npm文档。 这是我的axios请求 我能够成功记录成功请求的数据。但是,当我故意产生一个错误并尝试将其记录到console.log中时,我不会将结果记录下来,我只是看到了 邮递http://localhost:3000/login 401(未经授权):3000/登录:1 错误:请求失败,状态代码401 login.js:66 在c

  • 我试图通过aop在控制器中记录超文本传输协议请求。但是,在方面代码中,如果我 那么请求数据将无法在主流中检索。 所以,我创建了另一个公共方法,在控制器中传递请求字符串 这种方法是记录“数据”的切入点。 但问题是,这种方法的切入点似乎无法通过Spring识别,这种方法没有日志记录。我需要帮助。 下面是aop的定义