如何禁用来自 OkHttpLoggingInterceptor 的 OkHttp okhttp3.internal.platform.Platform 类的日志记录?

问题描述 投票:0回答:1

如何禁用来自 OkHttpLoggingInterceptor 的 OkHttp okhttp3.internal.platform.Platform 类的日志记录?

我收到日志消息,我无法从

host.json
中的配置关闭。 它们看起来像这样:

okhttp3.internal.platform.Platform log

在我的 azure 函数应用程序中,每个触发器的每次实例化都会收到 2 条日志消息。

如果我去掉 OkHttp 客户端上的 HttpLoggingInterceptor,那么日志消息就会消失,但我找不到其他方法来抑制它们。

这可能与这里一个非常古老的未解答问题有关:如何在使用 java 执行 watson Assistant 功能时禁用 okhttp3.internal.platform.Platform 日志在我的控制台上打印?

这是我的

host.json
日志配置:

"logLevel": {
  "default": "Information",
  "Worker": "None",
  "Function": "None",
  "Function.2TriggerName": "Debug",
  "Function.1TriggerName": "Debug",
  "Function.GetHealthCheck": "None",
  "Host.Results": "Error",
  "Host.Aggregator": "Information",
  "Host.Executor": "Information",
  "Host.Triggers": "Information",
  "Azure": "Error",
  "Azure.Security.KeyVault": "Error",
  "Azure.Core.Http": "Error",
  "Azure.Storage.Blob": "Error",
  "Azure.Messaging.ServiceBus": "Error",
  "Microsoft": "Error",
  "Microsoft.Identity": "Error"
},
logging okhttp azure-java-sdk
1个回答
0
投票

要禁用 okhttp3.internal.platform.Platform 的日志记录,您需要配置应用程序使用的日志记录框架。 OkHttp 通常使用主机环境提供的日志框架,例如 Java Util Logging (JUL)、SLF4J 或 Android 的日志机制。

根据您提到的日志消息,日志记录似乎是通过 Java Util Logging (JUL) 完成的。以下是如何配置 JUL 以抑制来自 okhttp3.internal.platform.Platform 的日志:

配置logging.properties文件:创建或修改logging.properties文件,将okhttp3.internal.platform.Platform的日志级别设置为OFF。

编程配置:您还可以在应用程序中以编程方式配置此功能。

  1. 使用logging.properties文件 如果您的应用程序打包为 JAR,您可以在 src/main/resources 目录中包含一个logging.properties 文件。

将以下行添加到logging.properties文件中:

handlers= java.util.logging.ConsoleHandler
.level= INFO
okhttp3.internal.platform.Platform.level = OFF
java.util.logging.ConsoleHandler.level = INFO

在运行应用程序时通过指定 java.util.logging.config.file 系统属性来确保 JVM 使用此配置:

java -Djava.util.logging.config.file=path/to/logging.properties -jar your-application.jar
  1. 编程配置 在使用 OkHttp 发出任何 HTTP 请求之前,您可以在代码中以编程方式配置记录器:

    导入java.util.logging.Level; 导入 java.util.logging.Logger;

    公共类 LoggingConfig {

     public static void disableOkHttpLogs() {
         Logger logger = Logger.getLogger(okhttp3.internal.platform.Platform.class.getName());
         logger.setLevel(Level.OFF);
     }
    
     public static void main(String[] args) {
         disableOkHttpLogs();
    
         // Your OkHttp client initialization and HTTP requests here
     }
    

    }

在 Azure Function App 中应用配置 鉴于您在 Azure Function App 中运行此程序,请确保logging.properties 文件已正确包含在您的部署包中,并且配置已正确设置。此外,您可以使用环境变量或编程配置来实现相同的目的。

© www.soinside.com 2019 - 2024. All rights reserved.