实现 Zuul 日志过滤器

2025年3月17日 | 阅读 3 分钟

在上一节中,我们讨论了在API网关中实现的常见功能。我们已经准备好 Zuul 服务器,它充当API网关。

在本节中,我们将在Zuul API网关中实现日志记录功能。

让我们在Zuul API网关中实现日志记录。

步骤 1:netflix-zuul-api-gateway-server项目中,创建一个名为ZuulLoggingFilter的新类文件。

步骤 2:添加注解@Componenet

步骤 3:扩展ZuulFilter类。ZuulFilter类中存在一些抽象方法。这些抽象方法必须在ZuulLoggingFilter类中实现。

步骤 4:将鼠标光标悬停在ZuulLoggingFilter类上。它建议了两个快速修复,如下图所示。单击添加未实现的方法。我们得到了ZuulFilter类的所有抽象方法的默认实现。

Zuul API Gateway

ZuulFilter类有四个抽象方法,如下所示

  • shouldFilter(): shouldFilter()方法检查请求,并决定是否执行过滤器。
  • run():如果!isFilterDisabled()shouldFilter()方法都返回true,则调用run()方法。
  • filterType(): filterType()方法按类型对过滤器进行分类。Zuul中有四种类型的标准过滤器:pre用于预路由过滤route用于路由到源post用于后路由过滤,以及error用于错误处理。Zuul还支持static类型用于静态响应。可以通过调用方法runFilters(type)来创建或添加任何过滤器类型并运行。
  • filterOrder(): 必须为过滤器定义过滤器顺序。如果过滤器的优先级不重要,则过滤器可以具有相同的过滤器顺序。过滤器顺序不需要是顺序的。

步骤 5:创建Logger类对象,并调用getLogger()方法来创建一个记录器。

请记住:导入org.slf4j包的Logger类。

步骤 6:run()方法中实现逻辑。

ZuulLoggingFilter.java

在下一步中,我们将看到如何使用Zuul拦截请求。