是否有可能排除某些服务调用以进行 http 日志记录?

Posted

技术标签:

【中文标题】是否有可能排除某些服务调用以进行 http 日志记录?【英文标题】:Is there a possibility to exclude certain service calls for http logging? 【发布时间】:2019-12-20 18:52:37 【问题描述】:

在https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor 的上下文中,是否有可能排除某些服务调用? 在我的应用程序中有 2-3 个 HTTP 调用,我不希望日志拦截器记录它。

是否有可能覆盖 HttpLoggingInterceptor 类中的拦截方法?是否有可能编写一个注释处理器,从日志记录中排除/忽略某些服务调用?

【问题讨论】:

【参考方案1】:

拦截器旨在与您的每个 http 调用挂钩,以便您可以观察到什么在上升,什么在下降。

但是为了减少拦截的 API 调用,您可以创建 2 个不同的改造客户端,一个带有 OkHttpClient,另一个没有任何客户端。

因此,您可以使用不想拦截的常规 Retrofit 客户端请求您的 Api,对于其他 API,请使用带有日志拦截的 OKHTTP 客户端。

【讨论】:

【参考方案2】:

你可以使用两个 OkHttpClient 实例,一个有拦截器,一个没有拦截器:

OkHttpClient okHttpClientWithLogging = new OkHttpClient.Builder()
  .addInterceptor(logging)
  .build(); 

OkHttpClient okHttpClientWithoutLogging = new OkHttpClient.Builder()
  .build();

【讨论】:

以上是关于是否有可能排除某些服务调用以进行 http 日志记录?的主要内容,如果未能解决你的问题,请参考以下文章

我们是不是需要取消订阅 Angular 中的 http 调用? [复制]

触发从“Keycloak”到“Azure ADB2C”的基本 http 调用以进行令牌响应时出错

进行 javaScript 调用以使用在 localhost 上运行的 REST API

如何使用 httpbackend 测试 Restangular http 调用以测试成功和错误情况?

如何进行服务器端 fetch 调用?

Movilizer - 通过 Web 服务调用以编程方式设置云用户的密码