You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OkHttpInterceptor未向LogCat输出日志问题咨询

解决OkHttpInterceptor未输出日志到LogCat的问题

我来帮你排查这个问题,结合你给出的代码片段,大概率是以下几个配置环节出了问题,按顺序检查就能解决:

1. 确保HttpLoggingInterceptor设置了正确的日志级别

你的getHttpLoggingInterceptor方法没写完,但很大概率是没设置日志级别——HttpLoggingInterceptor默认的级别是NONE,这种情况下不会输出任何日志。你需要显式设置日志级别,比如要输出完整的请求/响应体,就用Level.BODY:

private static HttpLoggingInterceptor getHttpLoggingInterceptor() {
    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    // 关键:设置日志级别,可选值有NONE/BASIC/HEADERS/BODY
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    return loggingInterceptor;
}

不同级别对应不同的日志内容:

  • NONE:无日志
  • BASIC:只输出请求方法、URL、响应状态码和耗时
  • HEADERS:输出请求和响应的头部信息
  • BODY:输出完整的请求/响应头部+体内容(调试时最常用)

2. 检查拦截器的添加顺序与自定义拦截器的正确性

你先添加了自定义的getInterceptor(),再添加日志拦截器,这里要注意两个点:

  • 自定义拦截器必须在intercept方法中调用chain.proceed(request),否则请求会被拦截中断,后续的日志拦截器根本不会执行。比如自定义拦截器的正确写法:
private static Interceptor getInterceptor() {
    return new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request modifiedRequest = chain.request().newBuilder()
                    // 你的自定义逻辑(比如添加Header)
                    .addHeader("Authorization", "Bearer xxx")
                    .build();
            // 必须调用此方法,让请求继续传递到下一个拦截器/服务器
            return chain.proceed(modifiedRequest);
        }
    };
}
  • 日志拦截器的位置:如果你想记录经过自定义拦截器修改后的请求/响应,当前的顺序是对的;如果想记录原始请求,可以把日志拦截器放在自定义拦截器之前。

3. 确认HttpLoggingInterceptor依赖已正确引入

如果项目里没添加日志拦截器的依赖,代码编译可能通过但实际运行时不会输出日志。在你的build.gradle(Module level)中添加对应版本的依赖(注意要和OkHttp主库版本一致):

implementation 'com.squareup.okhttp3:logging-interceptor:4.11.0' // 替换为你使用的OkHttp版本

4. 验证BuildConfig.DEBUG是否为true

你的日志拦截器只在BuildConfig.DEBUG为true时添加,如果当前运行的不是Debug变体,或者gradle配置中Debug模式的DEBUG字段未设为true,日志拦截器根本不会被添加到OkHttpClient中。

检查gradle配置:

buildTypes {
    debug {
        buildConfigField "boolean", "DEBUG", "true"
        minifyEnabled false
    }
    release {
        buildConfigField "boolean", "DEBUG", "false"
        minifyEnabled true
    }
}

也可以在代码中临时加一行日志确认:

if (BuildConfig.DEBUG) {
    Log.d("OkHttpDebug", "DEBUG模式,添加日志拦截器");
    builder.addInterceptor(getHttpLoggingInterceptor());
}

5. 检查LogCat的过滤设置

有时候不是没输出日志,而是LogCat的过滤规则把日志挡住了:

  • HttpLoggingInterceptor默认的日志标签是OkHttp,可以在LogCat中搜索这个标签,或者直接取消标签过滤
  • 确保LogCat的日志级别选的是Verbose或Info(日志拦截器的输出大多是Info级别)
  • 检查是否开启了“Show only selected application”,确保选中的是当前运行的APP

按照上面的步骤逐一排查,应该就能解决日志不输出的问题了。

内容的提问来源于stack exchange,提问作者Gokul Nath KP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:43:49