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

В этой статье представлен обзор добавления ведения журнала с помощью logback в приложения, использующие Azure SDK для 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 фреймворк работает, считывая файл Spring application.properties для различных конфигураций, включая настройки журналирования. Вы можете настроить приложение 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.