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

我正在使用Azure 的 Java SDK和Maven开发应用程序。此应用程序将数据发送到 IoT 中心和其他一些对问题范围不重要的功能。

我通过使用在应用程序中实现了自己的日志记录log4j2,我对此很好,因为我可以随意修改和更改它。


当我检查应用程序控制台输出中出现的此警告时,出现了问题:


SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: 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 LogInfo

INFO: 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 LogInfo

INFO: 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 LogInfo

INFO: DeviceIO object is created successfully, method name is <init>

Jun 07, 2018 8:09:20 PM com.microsoft.azure.sdk.iot.device.CustomLogger LogInfo

INFO: Setting SASTokenExpiryTime as 2400 seconds, method name is setOption_SetSASTokenExpiryTime

...

我已经尝试禁用Logger但没有成功(按照这个 SO question)。


我想知道是否有人遇到过这个问题,如果有,我该如何禁用日志记录功能或抑制警告?

提前非常感谢!


临摹微笑
浏览 142回答 1
1回答

jeck猫

您可以参考一个博客How to Configure SLF4J with Different Logger Implementations来配置您的slf4j-jdk14记录器实现,如下所示。将 slf4j 与 JDK 记录器一起使用JDK其实自带了一个logger包,你可以用这个logger实现替换pom.xml。<dependency>&nbsp; <groupId>org.slf4j</groupId>&nbsp; <artifactId>slf4j-jdk14</artifactId>&nbsp; <version>1.7.5</version></dependency>现在 JDK 日志记录的配置有点难以使用。不仅需要一个配置文件,例如 src/main/resources/logging.properties,而且您还需要添加一个系统属性 -Djava.util.logging.config.file=logging.properties 以便让它拾取它. 这是一个帮助您入门的示例:level=INFOhandlers=java.util.logging.ConsoleHandlerjava.util.logging.ConsoleHandler.level=FINESTdeng.level=FINEST有两种方法可以避免将这些INFO日志输出到控制台。将日志级别从FINEST或INFOto升级WARNING到SEVERE,可以参考 Oracle Javadoc for class Level,如下所示,然后不输出低级日志。按降序排列的级别是:SEVERE (highest value)WARNINGINFOCONFIGFINEFINERFINEST (lowest value)要更改 中的handler值logging.properties。除了ConsoleHandler,您还可以使用其他四个处理程序,如下所示,请参阅java.utils.logging包摘要。ConsoleHandler:这个Handler将日志记录发布到System.err。FileHandler:简单的文件日志处理程序。MemoryHandler:在内存中的循环缓冲区中缓冲请求的处理程序。SocketHandler:简单的网络日志处理程序。StreamHandler:基于流的日志处理程序。例如,将日志输出到文件handlers=java.util.logging.FileHandlerjava.util.logging.FileHandler.level=INFOjava.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatterjava.util.logging.FileHandler.limit=1024000java.util.logging.FileHandler.count=10java.util.logging.FileHandler.pattern=logs/mylog.logjava.util.logging.FileHandler.append=true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java