如何使用Grails 3记录请求和响应(标题+正文)?

时间:2016-02-22 17:31:57

标签: grails spring-boot grails-3.0

我正在寻找在Grails 3应用程序中记录传入请求和返回响应(标题+正文)的方法。 Grails有拦截器的概念,但在这些拦截器中,我无法读取身体,因为身体只能读一次。因此,如果我在拦截器中执行此操作,则正常的控制器逻辑会失败,并显示一条错误,指示该流已经关闭。

我还试图找到如何使用SpringBoot来实现这一点的方法,因为Grails实际上是基于SpringBoot。

有关如何在Grails 3应用程序中完成此操作的任何提示?

1 个答案:

答案 0 :(得分:1)

我建议使用以下方法(当我需要类似的功能时,没有找到任何可用于spring-boot的东西,所以我决定自己动手):

  • 实施HttpServletRequestWrapper,会在InputStream消耗时复制字节,以便您可以多次重读请求正文

  • 实现并注册Filter,它将在进入途中包装http请求,并在请求被消耗后记录完整的请求/响应,并且响应由端点生成

    < / LI>

很好的奖励是您可以在一个日志记录语句中记录请求和响应,并将它们保存在日志文件中。