为了账号安全,请及时绑定邮箱和手机立即绑定

Azure Java SDK:如何禁用日志记录到控制台?

Azure Java SDK:如何禁用日志记录到控制台?

临摹微笑 2022-06-08 17:00:24
我正在使用Azure 的 Java SDK和Maven开发应用程序。此应用程序将数据发送到 IoT 中心和其他一些对问题范围不重要的功能。我通过使用在应用程序中实现了自己的日志记录log4j2,我对此很好,因为我可以随意修改和更改它。当我检查应用程序控制台输出中出现的此警告时,出现了问题:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.多亏了这个 SO question,我才能做出正确的举动并在我的pom.xml文件中添加依赖项,如下所示:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.project.myProject</groupId>  <artifactId>myProject</artifactId>  <packaging>jar</packaging>  <version>1.0.0</version>...    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-jdk14</artifactId>      <version>1.7.25</version>    </dependency>...在此添加之后,Azure 的 SDK 开始打印以控制很多我不想看到的信息。这应该是发起日志记录的类。接下来,一些输出会自行写入控制台。...Jun 07, 2018 8:09:18 PM com.microsoft.azure.sdk.iot.device.CustomLogger LogInfoINFO: IotHubConnectionString object is created successfully for iotHub.azure-devices.net, method name is <init>Jun 07, 2018 8:09:19 PM com.microsoft.azure.sdk.iot.device.CustomLogger LogInfoINFO: DeviceClientConfig object is created successfully with IotHubName=iotHub.azure-devices.net, deviceID=device01 , method name is <init>Jun 07, 2018 8:09:20 PM com.microsoft.azure.sdk.iot.device.CustomLogger LogInfoINFO: DeviceIO object is created successfully, method name is <init>Jun 07, 2018 8:09:20 PM com.microsoft.azure.sdk.iot.device.CustomLogger LogInfoINFO: Setting SASTokenExpiryTime as 2400 seconds, method name is setOption_SetSASTokenExpiryTime...我已经尝试禁用Logger但没有成功(按照这个 SO question)。我想知道是否有人遇到过这个问题,如果有,我该如何禁用日志记录功能或抑制警告?提前非常感谢!
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以参考一个博客How to Configure SLF4J with Different Logger Implementations来配置您的slf4j-jdk14记录器实现,如下所示。


将 slf4j 与 JDK 记录器一起使用


JDK其实自带了一个logger包,你可以用这个logger实现替换pom.xml。


<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-jdk14</artifactId>

  <version>1.7.5</version>

</dependency>

现在 JDK 日志记录的配置有点难以使用。不仅需要一个配置文件,例如 src/main/resources/logging.properties,而且您还需要添加一个系统属性 -Djava.util.logging.config.file=logging.properties 以便让它拾取它. 这是一个帮助您入门的示例:


level=INFO

handlers=java.util.logging.ConsoleHandler

java.util.logging.ConsoleHandler.level=FINEST

deng.level=FINEST

有两种方法可以避免将这些INFO日志输出到控制台。


将日志级别从FINEST或INFOto升级WARNING到SEVERE,可以参考 Oracle Javadoc for class Level,如下所示,然后不输出低级日志。

按降序排列的级别是:


SEVERE (highest value)

WARNING

INFO

CONFIG

FINE

FINER

FINEST (lowest value)

要更改 中的handler值logging.properties。除了ConsoleHandler,您还可以使用其他四个处理程序,如下所示,请参阅java.utils.logging包摘要。

ConsoleHandler:这个Handler将日志记录发布到System.err。

FileHandler:简单的文件日志处理程序。

MemoryHandler:在内存中的循环缓冲区中缓冲请求的处理程序。

SocketHandler:简单的网络日志处理程序。

StreamHandler:基于流的日志处理程序。

例如,将日志输出到文件


handlers=java.util.logging.FileHandler

java.util.logging.FileHandler.level=INFO

java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

java.util.logging.FileHandler.limit=1024000

java.util.logging.FileHandler.count=10

java.util.logging.FileHandler.pattern=logs/mylog.log

java.util.logging.FileHandler.append=true


查看完整回答
反对 回复 2022-06-08
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信