关于Android Studio 控制台日志显示不全解决方案

在做关于阿里云api接口关于天气预报实验时,发现对于七天的天气预报的实体参数的提取是正常的,但是对15天的天气的提取出现了报错:

将上述代码删去多余部分(2024...)复制至下方出现报错

放至在线JSON网站下看到完整代码发现了问题:

发现代码并不完整,问题是日志过于长而导致数据不全, Android系统的单条日志打印长度是有限和固定的。

一开始的解决方案是通过修改studio64.exe.vmoptions的内容来增加控制台缓冲区的大小:

第一种是通过点击"Help"->"Edit Custom VM Options"中添加:

-Xms512m
-Xmx2048m
-XX:MaxPermSize=1024m

第二种是在studio64.exe.vmoptions文件中添加:

idea.cycle.buffer.size=1024

但是两种方法都没解决我的问题

最终通过上网查询找到解决方法:

将retrofit工具类由原来的,分段打印

public class RetrofitUtils {

    public static Retrofit getRetrofit(String url) {
        //日志显示级别
        HttpLoggingInterceptor.Level level= HttpLoggingInterceptor.Level.BODY;
        //新建log拦截器
        HttpLoggingInterceptor loggingInterceptor=new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                Log.d("RetrofitMessage","OkHttp====Message:"+message);
            }
        });
        loggingInterceptor.setLevel(level);
        //定制OkHttp
        OkHttpClient.Builder httpClientBuilder = new OkHttpClient
        .Builder();
        //OkHttp进行添加拦截器loggingInterceptor
        httpClientBuilder.addInterceptor(loggingInterceptor);

        Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(url)
        .addConverterFactory(GsonConverterFactory.create())
        .client( httpClientBuilder.build())
        .build();

        return retrofit;
    }

}

改为了:

public class RetrofitUtils {

    public static Retrofit getRetrofit(String url) {
        //日志显示级别
        HttpLoggingInterceptor.Level level= HttpLoggingInterceptor.Level.BODY;
        //新建log拦截器
        HttpLoggingInterceptor loggingInterceptor=new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                //我们采取分段打印日志的方法:当长度超过4000时,我们就来分段截取打印
                //剩余的字符串长度如果大于4000
                if (message.length() > 4000) {
                    for (int i = 0; i < message.length(); i += 4000) {
                        //当前截取的长度<总长度则继续截取最大的长度来打印
                        if (i + 4000 < message.length()) {
                            Log.i("RetrofitMessage" + i, message.substring(i, i + 4000));
                        } else {
                            //当前截取的长度已经超过了总长度,则打印出剩下的全部信息
                            Log.i("RetrofitMessage" + i, message.substring(i, message.length()));
                        }
                    }
                } else {
                    //直接打印
                    Log.i("RetrofitMessage", message);
                }
            }
        });
        loggingInterceptor.setLevel(level);
        //定制OkHttp
        OkHttpClient.Builder httpClientBuilder = new OkHttpClient
                .Builder();
        //OkHttp进行添加拦截器loggingInterceptor
        httpClientBuilder.addInterceptor(loggingInterceptor);

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .client( httpClientBuilder.build())
                .build();

        return retrofit;
    }

}

 记得要删去多余的内容!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值