Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 62.2MB ·虚拟内存 1300.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
在上一节中,我们讨论了在API网关中实现的常见功能。我们已经准备好充当API网关的Zuul服务器。
在本节中,我们将在Zuul API Gateway中实现日志记录功能。
让我们在Zuul API中实现日志记录网关。
步骤1: 在 netflix-zuul-api-gateway-server 项目中,创建一个名称为 的新类文件,ZuulLoggingFilter。
步骤2: 添加注释 @Componenet 。
步骤3: 扩展 ZuulFilter 类。 ZuulFilter类中有一些抽象方法。这些抽象方法必须在ZuulLoggingFilter类中实现。
步骤4: 将光标移到 ZuulLoggingFilter 类 上。 它建议两个快速修复方法,如下图所示。单击 添加未实现的方法。 我们获得ZuulFilter类的所有抽象方法的默认实现。
ZuulFilter 类具有以下列出的四个抽象方法
步骤5: 创建 Logger 类对象,并调用 getLogger()方法来创建记录器。
private Logger logger=LoggerFactory.getLogger(this.getClass());
记住: 导入 org.slf4j 包的 Logger 类。
步骤6: 在 run()方法中实现逻辑。
public Object run() throws ZuulException { //getting the current HTTP request that is to be handle HttpServletRequest request=RequestContext.getCurrentContext().getRequest(); //printing the detail of the request logger.info("request -> {} request uri-> {}", request, request.getRequestURI()); return null; }
ZuulLoggingFilter.java
package com.aizws.microservices.netflixzuulapigatewayserver; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; @Component public class ZuulLoggingFilter extends ZuulFilter { //creating Logger object private Logger logger=LoggerFactory.getLogger(this.getClass()); @Override public booleanshouldFilter() { return true; //executing filter for every request } //log the content of the request @Override public Object run() throws ZuulException { //getting the current HTTP request that is to be handle HttpServletRequest request=RequestContext.getCurrentContext().getRequest(); //prints the detail of the requestin the log logger.info("request -> {} request uri-> {}", request, request.getRequestURI()); return null; } @Override public String filterType() { return "pre"; //intercept all the request before execution } @Override public intfilterOrder() { return 1; //setting filter order to 1 } }
在下一步中,我们将看到如何使用Zuul拦截请求。
步骤1: 运行 netflix-eureka-naming-server。步骤2: 在端口 8000 上运行 currency-exchange-service 。步骤3: 在端口 81 ...