Springcloud Gateway网关日志这样打才完美

日志打印收集是开发中调试和定位线上问题的关键手段也是重中之重,gateway作为请求入口转发的核心模块,合理、规范的日志打印很重要。

  • 这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。
  • 实现方式使用 gateway 的 GlobalFilter 过滤器。
  • 请求日志打印的过滤器排序尽量低一些。
  • 打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。

RequestLogFilter

增加一个请求入参过滤器,用来打印入参信息。

@Slf4j
@Configuration
@ConditionalOnProperty(value = "log.request.enabled", havingValue = "true", matchIfMissing = true)
public class RequestLogFilter implements GlobalFilter, Ordered {

   @Override
   public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
      ServerHttpRequest request = exchange.getRequest();
      // 打印请求路径
      String path = request.getPath().pathWithinApplication().value();
      // 打印请求url
      String requestUrl = this.getOriginalRequestUrl(

你可能感兴趣的:(面试,学习路线,阿里巴巴,spring,cloud,gateway,java,云原生,开发语言)