Поделиться через


Логирование с использованием Azure SDK для Java и Logback

В этой статье представлен обзор добавления ведения журнала с помощью logback в приложения, использующие пакет SDK Azure для Java. Как упоминалось в статье Настройка ведения журнала в пакете SDK Azure для Java, все клиентские библиотеки Azure регистрируются через SLF4J, чтобы использовать платформы ведения журнала, такие как Logback.

Чтобы включить логирование с помощью Logback, необходимо выполнить два действия.

  1. Включите библиотеку Logback в качестве зависимости.
  2. Создайте файл с именем logback.xml в каталоге проекта проекта /src/main/resources.

Дополнительные сведения о настройке Logback см. в разделе конфигурация Logback документации по Logback.

Добавьте зависимость Maven

Чтобы добавить зависимость Maven, добавьте следующий XML-код в файл pom.xml проекта. Замените номер версии 1.2.3 номером последней версии, отображаемым на странице классического модуля logback.

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

Добавьте logback.xml в ваш проект

Logback является одним из популярных фреймворков логирования. Чтобы включить ведение журнала logback, создайте файл с именем logback.xml в каталоге ./src/main/resources проекта. Этот файл содержит конфигурации ведения журнала для настройки потребностей ведения журнала. Дополнительные сведения о настройке logback.xmlсм. в конфигурации Logback в документации по Logback.

Логирование консоли

Вы можете создать конфигурацию logback для входа в консоль, как показано в следующем примере. Этот пример настраивается для регистрации всех событий журнала уровня INFO или выше, независимо от источника.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>
        %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %blue(%logger{100}): %msg%n%throwable
      </Pattern>
    </layout>
  </appender>

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Журналирование ошибок ядра Azure

В следующем примере конфигурация аналогична предыдущей, но снижает уровень, на котором осуществляется журналирование, для всех классов пакета com.azure.core (включая подклассы). Таким образом, регистрируется всё на уровне INFO и выше, за исключением com.azure.core, где регистрируется только уровень ERROR и выше. Например, этот подход можно использовать, если вы нашли код в com.azure.core слишком шумным. Такая конфигурация также может работать в обоих направлениях. Например, если вы хотите получить дополнительные сведения об отладке из классов в com.azure.core, можно изменить этот параметр на DEBUG.

Возможно обеспечить точный контроль над логированием конкретных классов или пакетов. Как показано здесь, com.azure.core управляет выходными данными всех основных классов, но вы также можете использовать com.azure.security.keyvault или эквивалентно управлять выходными данными в соответствии с обстоятельствами, которые наиболее информативны в контексте запущенного приложения.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%message%n</pattern>
    </encoder>
  </appender>

  <logger name="com.azure.core" level="ERROR" />

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Вход в файл с включенным поворотом журнала

Предыдущие примеры записываются на консоль, которая обычно не является предпочтительным местом хранения для лог-файлов. Вместо этого используйте следующую конфигурацию для входа в файл с почасовой откатом и архивацией в формате gzip:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <property name="LOGS" value="./logs" />
  <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS}/spring-boot-logger.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover hourly and gzip logs -->
      <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH}.log.gz</fileNamePattern>
    </rollingPolicy>
  </appender>

  <!-- LOG everything at INFO level -->
  <root level="INFO">
    <appender-ref ref="RollingFile" />
  </root>
</configuration>

Приложения Spring

Платформа Spring работает, считывая файл application. properties Spring для различных конфигураций, включая конфигурацию ведения журнала. Однако можно настроить приложение Spring для чтения конфигураций Logback из любого файла. Чтобы сделать это, настройте свойство logging.config, чтобы указать файл конфигурации logback.xml, добавив следующую строку в файл Spring /src/main/resources/application.properties:

logging.config=classpath:logback.xml

Дальнейшие действия

В этой статье описана конфигурация Logback и как заставить пакет Azure SDK для Java использовать его для ведения журнала. Так как пакет SDK Azure для Java работает со всеми платформами ведения журнала SLF4J, рассмотрите возможность просмотра руководства пользователя SLF4J для получения дополнительных сведений. Если вы используете Logback, на его веб-сайте также есть огромное количество рекомендаций по настройке. Дополнительные сведения см. в разделе «Конфигурация Logback» в документации по Logback.

После настройки ведения журнала рассмотрите возможности интеграции, которые Azure предлагает в платформы, такие как Spring и MicroProfile.