使用 Spring Boot,如何查看 Zuul 的调试信息?
Posted
技术标签:
【中文标题】使用 Spring Boot,如何查看 Zuul 的调试信息?【英文标题】:Using Spring Boot, how do I see debug info for Zuul? 【发布时间】:2016-02-23 12:22:40 【问题描述】:我正在尝试在我的 Spring Boot 项目中使用 Zuul。
application.properties
server.context-path=/$spring.application.name
zuul.routes.engine.path=/api/engine/**
zuul.routes.engine.url=$engine.url
GET
请求正在运行;但是,Zuul 没有转发我的 POST
请求。我没有看到此处列出的GET
或POST
的任何调试输出:How To Use。
如何为 Zuul 启用 DEBUG
日志模式?
【问题讨论】:
【参考方案1】:设置属性zuul.debug.request=true
。
【讨论】:
如果您使用执行器,也可以使用/trace
端点。
这将标记我一个错误说 --> zuul.debug.request 是未知属性
IDE 并不了解所有 netflix oss 属性。【参考方案2】:
Spencer 的回答不适用于我当前的 Zuul 版本(Spring Cloud Starter Zuul 1.4.6.RELEASE)。相反,起作用的是将以下日志记录属性添加到 application.yml
logging:
level:
org:
springframework:
cloud:
netflix: trace
【讨论】:
【参考方案3】:为了在 Spring 应用程序中记录请求和响应,我成功使用了属性:
logging:
level:
org:
apache:
http:
wire: debug
【讨论】:
【参考方案4】:你需要两件事:
-
将
zuul.include-debug-header: true
添加到您的application.yml
文件中。
将debug=true
附加到您的请求中,例如http://localhost:8080/api/user/1?debug=true
这样您将在响应中的X-Zuul-Debug-Header
中收到调试数据
【讨论】:
这可行,但是我发现调试信息很难理解【参考方案5】:我们正在使用
spring-boot-2.3.3.RELEASE
spring-cloud-netflix-zuul-2.2.4.RELEASE
zuul-core-1.3.1
我加了
zuul:
include-debug-header: true
debug.request: true
debugFilters.disabled: false
到我的 application.yml 文件。
我加了
com.netflix.zuul.context.Debug.setDebugRequest(true);
com.netflix.zuul.context.Debug.setDebugRequestHeadersOnly(true);
com.netflix.zuul.context.Debug.setDebugRouting(true);
到我的过滤器的 doFilter() 方法之一:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
然后每个请求的响应都包含一个新的标头 X-Zuul-Debug-Header,其中包含为处理该请求而运行的 zuul 过滤器列表。
【讨论】:
以上是关于使用 Spring Boot,如何查看 Zuul 的调试信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 应用程序中从 Api 网关(Zuul)调用外部服务(非 MSA)
使用 Spring boot、Eureka、Zuul、Spring Oauth 创建 OAuth 安全微服务的问题