当前位置: 首页 > 知识库问答 >
问题:

HttpLoggingInterceptor 未通过改造进行日志记录 2

云焱
2023-03-14

我试图使用refrofit2、kotlin和loging-拦截器记录所有请求(使用网络拦截器):

  • 改造:“2.0.2”
  • okhttp3 : “3.2.0”
  • com.squareup.okhttp3:logging-interceptor 3.2.0

喜欢:

val interceptor = HttpLoggingInterceptor()
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

    val okHttpClient = OkHttpClient.Builder()
        .addNetworkInterceptor(interceptor) // same for .addInterceptor(...)
        .connectTimeout(30, TimeUnit.SECONDS) //Backend is really slow
        .writeTimeout(30, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .build()

    sRestAdapter = Retrofit.Builder()
        .client(okHttpClient)
        .baseUrl(if (host.endsWith("/")) host else "$host/")
        .addConverterFactory(GsonConverterFactory.create(gson()))
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .build()

它只是打印:

D/OkHttp: --> GET url...
D/OkHttp: --> END GET

到底发生了什么?

-编辑-

记录器不会显示在主线程上执行请求的错误,因此请小心。

共有2个答案

薛兴言
2023-03-14
private val interceptor = run {
    val httpLoggingInterceptor = HttpLoggingInterceptor()
    httpLoggingInterceptor.apply {
        httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
    }
}


private val okHttpClient = OkHttpClient.Builder()
    .addNetworkInterceptor(interceptor) // same for .addInterceptor(...)
    .connectTimeout(30, TimeUnit.SECONDS) //Backend is really slow
    .writeTimeout(30, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build()
杨良平
2023-03-14

而不是

val okHttpClient = OkHttpClient.Builder()
    .addNetworkInterceptor(interceptor)
    ...

你应该有这样的东西:

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor(interceptor)
    ...

当<code>addNetworkInterceptor()</code>与观察单个网络请求和响应的拦截器一起玩时,而<code>AddIntercepter()</code>添加了观察每个调用的整个范围的拦截程序:从建立连接(如果有)到选择响应源(原始服务器、缓存或两者)之后。

编辑

记录器不会显示在主线程上执行请求的错误,所以要小心

在主线程上进行联网不是一个“普通的”错误。这将导致您的应用程序被系统以< code > NetworkOnMainThreadException 终止,这将发生在拦截器有机会运行之前。

 类似资料:
  • 我想登录由几个类组成的应用程序。我想要一个。txt日志文件的末尾。因此,我创建了一个静态记录器实例,并在一个类中为其创建了一个FileHandler。因为我想要一个文件,所以我在FileHandler中将第二个参数设置为true,以便能够在日志记录期间追加日志文件。 之后,我创建了其他伐木工人。我知道我必须为每个类实例化一个记录器。因此,我只为每个类创建记录器(不带FileHandler)。但是所

  • 我正在尝试获取请求中发送的确切的JSON。下面是我的代码: 但我只在日志中看到这一点:

  • 问题内容: 任何人都可以在python中建议一种记录方法: 每天记录日志旋转 旋转日志时的压缩 可选-删除最早的日志文件以保留X MB的可用空间 可选-sftp日志文件到服务器 感谢您的任何答复 问题答案: 每天进行日志轮换: 使用TimedRotatingFileHandler 日志压缩 :设置参数。(请注意,此“技巧”仅适用于Python2。’bz2’不再被视为Python3中的编码。) 可选

  • 如何从python脚本关闭pyspark日志记录?请注意:我不想对spark logger属性文件进行任何更改。

  • 我正在尝试使用PostSharp和multicastAttribute实现日志记录。使用PostSharp诊断库中的日志功能。 我有一个GlboalAspects。启动项目目录中的cs。内容如下。 右键单击我的项目并选择属性,默认命名空间是“alp_generator” 我不知道“PostSharp.Patterns.Diagnostics.LogAttribute”是否正确。 我根本没有日志记录