我在哪里可以找到zuul中的调试信息?

时间:2017-05-11 08:25:20

标签: netflix-zuul

我想在ZUUL中使用debugFilter。当我在查询字符串中发布param“debug = true”时,我在标准输出中找不到调试信息。

我在哪里可以找到调试信息?

1 个答案:

答案 0 :(得分:2)

如果您使用param debug=true调用api,调试信息将使用密钥RequestContext累积到routingDebug。值为List<String>类型。 如果设置如下所示的属性,调试信息将添加到响应标头 - X-Zuul-Debug-Header

zuul.include-debug-header=true

据我所知,此信息不会默认打印到标准输出。 相反,您可以通过com.netflix.zuul.context.Debug.getRoutingDebug()轻松访问此信息。

您可以制作自己的后置过滤器,以便轻松打印出此信息。

@Override
public boolean shouldFilter() {
    return Debug.debugRouting();
}

@Override
public Object run() {
    String debug = convertToPrettyPrintString(Debug.getRoutingDebug());
    log.info("Filter Debug Info = \n{}", debug);
    // or System.out.println(...)
    return null;
}

private String convertToPrettyPrintString(List<String> filterDebugList) {
    return filterDebugList.stream()
        .map(s -> s.startsWith("{") ? "\t" + s : s)
        .collect(Collectors.joining("\n"));
}