如何禁用来自 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"
},
要禁用 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。
编程配置:您还可以在应用程序中以编程方式配置此功能。
将以下行添加到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
编程配置 在使用 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 文件已正确包含在您的部署包中,并且配置已正确设置。此外,您可以使用环境变量或编程配置来实现相同的目的。