在Spring Boot中修改日志请求有效负载

时间:2018-01-29 15:09:38

标签: java spring spring-boot logging

我们如何在Spring-boot中修改和记录请求有效负载?

我已经实现了 CommonsRequestLoggingFilter ,并且能够记录有效负载,但希望在记录之前修改请求,这样我就可以在日志中隐藏一些敏感数据。

2 个答案:

答案 0 :(得分:0)

我认为你正在开发一个中央jar,它将由多个客户在他们的项目中使用。 这是我记录有效载荷的几美分。

  1. 如果不记录整个有效负载,请始终记录内容长度(这有助于调试很多问题。)
  2. 在pre-prod和prod中有一个响应日志记录开关,这样就不会记录任何内容,并且在preprod开发人员可以根据需要启用完整的请求/响应日志记录。
  3. 传入的请求可以转换为字符串,现在我们可以使用正则表达式屏蔽数据(如果字符串中有秘密,掩盖接下来的10个字符)
  4. 应该有最大有效负载大小(或字符串长度),可以记录,以便日志不会膨胀。
  5. 我希望这会有所帮助。

答案 1 :(得分:0)

CommonsRequestLoggingFilter继承自AbstractRequestLoggingFilter,它使您可以提供一个谓词,该谓词应返回true以记录错误。

就我而言,我想记录除授权标头之外的所有内容:

loggingFilter.setHeaderPredicate(header -> !header.toLowerCase().equals("authorization"));

这将导致记录器屏蔽auth标头:

... headers=[authorization:"masked", ...]

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/AbstractRequestLoggingFilter.html#setHeaderPredicate-java.util.function.Predicate-