Azure Java SDK: как отключить ведение журнала на консоли? - PullRequest
0 голосов
/ 06 февраля 2019

Я занимаюсь разработкой приложения с использованием Java AzK SDK и Maven .Это приложение отправляет данные в IoT Hub и некоторые другие функции, которые не важны для объема вопроса.
Я реализовал собственную регистрацию внутри приложения, используя 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 Я смог сделать правильный ход и добавить зависимость внутри моего 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>
...

После этого добавления SDK Azure начал выводить на консоль много информации, которую я не могуочень хочу увидеть. Этот должен быть классом, который инициирует ведение журнала.
После этого некоторые выходные данные записываются на консоль самостоятельно.

...
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 но безуспешно (следуя этот вопрос ).

Я хотел бы знать, была ли у кого-то когда-либо эта проблема, и если да, то как я могу отключить функции ведения журнала или же подавитьпредупреждение?
Заранее большое спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

Существует блог How to Configure SLF4J with Different Logger Implementations, к которому вы можете обратиться, чтобы настроить реализацию slf4j-jdk14 регистратора, как показано ниже.

Использование slf4j с регистратором JDK

JDK на самом деле поставляется с пакетом логгера, и вы можете заменить pom.xml этой реализацией логгера.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-jdk14</artifactId>
  <version>1.7.5</version>
</dependency>

Теперь настройку логирования JDK немного сложноработать с.Нужен не только файл конфигурации, такой как assrc / 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 на консоль.

  1. Обновите уровень ведения журнала сFINEST или INFO до WARNING до SEVERE, вы можете обратиться к Oracle Javadoc для класса Level, как показано ниже, чтобы не выводить журналы низкого уровня.

Уровни в порядке убывания:

SEVERE (highest value)
WARNING
INFO
CONFIG
FINE
FINER
FINEST (lowest value)
Чтобы изменить значение handler в logging.properties.Кроме ConsoleHandler, есть четыре других обработчика, которые вы можете использовать, как показано ниже, см. java.utils.logging сводка пакета.
  • ConsoleHandler: ThisОбработчик публикует записи журнала в 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
...