自定义okhttp日志
来源:互联网 发布:生成式对抗网络 应用 编辑:程序博客网 时间:2024/06/05 10:25
目的:
1.不希望打一堆乱七八糟的console日志
2.希望正常情况下打debug, 异常情况下打info便于生产环境调试
package com.mcc.util;import okhttp3.*;import okio.Buffer;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import java.util.concurrent.TimeUnit;/** * Created by Mingchenchen on 2017/11/13. */public class OkHttpLoggingInterceptor implements Interceptor { //自定义名称,简洁 同时能够通过调整包日志级别统一设置 private static Logger logger = LoggerFactory.getLogger("com.mcc.HttpLog"); @Override public Response intercept(Chain chain) throws IOException { //chain里面包含了request和response Request request = chain.request(); long t1 = System.currentTimeMillis(); Response response = chain.proceed(request); long t2 = System.currentTimeMillis();//收到响应的时间 //获取requestBody String requestString = ""; RequestBody requestBody = request.body(); if (requestBody != null) { Buffer buffer = new Buffer(); requestBody.writeTo(buffer); requestString = buffer.readUtf8(); } //获取responseBody ResponseBody responseBody = response.peekBody(1024 * 1024); if (response.isSuccessful()) { if (logger.isDebugEnabled()) { logger.debug("[--> {} {} {} ({}ms)]", request.method(), response.code(), request.url(), (t2 - t1)); logger.debug("[--> body: {}]", requestString); logger.debug("[<-- resp: {}]\n", responseBody.string()); } } else { logger.warn("[--> {} {} {} ({}ms)]", request.method(), response.code(), request.url(), (t2 - t1)); logger.warn("[--> body: {}]", requestString); logger.warn("[<-- resp: {}]\n", responseBody.string()); } return response; } public static void main(String[] args) throws IOException { OkHttpClient client = new OkHttpClient().newBuilder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .addInterceptor(new OkHttpLoggingInterceptor()) .build(); String body = "{\"startTime\":\"2017-10-30 00:27:00\",\"serviceName\":\"gapi\",\"endTime\":\"2017-11-30 17:27:16\",\"logsFilterMap\":{}}"; RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), body); Request request = new Request.Builder() .url("http://gapi.dev-ag.xx.com/internal-api/v2/trace/query?pn=1&ps=8") .post(requestBody) .build(); client.newCall(request).execute(); client.newCall(request).execute(); client.newCall(request).execute(); client.newCall(request).execute(); }}
效果:
阅读全文
0 0
- 自定义okhttp日志
- 自定义okhttp
- okhttp的自定义封装
- OkHttp自定义重试次数
- okhttp日志拦截器LoggingInterceptor
- okhttp日志打印拦截器
- Volley+OkHttp+Gson自定义框架
- Retrofit2.0 或OKHttp 日志log
- okhttp 日志拦截器Logging-interceptor
- Okhttp插入日志及结合Retrofit使用
- okhttp之自定义Interceptor:缓存拦截器
- OKHTTP,RecycleView,ImageLoader,Glide,自定义VIew
- 关于okhttp的自定义拦截器
- 自定义OKhttp拦截器 添加请求头
- log4j日志-自定义日志文件
- OkHttp
- okhttp
- OkHttp
- ROS学习笔记--清除一些僵尸node
- CentOS7,keepalived+ httpd 搭建双机热备
- 怎样在win7中 安装Tomcat7.0
- 如何使用优先级视图
- [NOIP2017][luogu3953]逛公园
- 自定义okhttp日志
- OpenCV-Python-Tutorial[5]
- 图之最短路径:弗洛伊德(Floyd)算法
- 使用SpringAOP切面实现对controller的拦截,并对url,参数和返回值记录
- TCP/IP详解卷1:协议(八)【广播和多播,ICMP:Internet组管理协议】
- 当一回诗人,基于TF写古诗
- javascript中数组(Array)对象和字符串(String)对象的常用方法总结
- Tomcat启动问题(debug无法启动,正常可以启动)
- ARM9(nuc972)ISP程序烧录