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


Создание журналов с помощью Azure SDK для Java и Logback

В этой статье приводятся общие сведения о добавлении ведения журналов в приложения, использующие Azure SDK для Java, с помощью Logback. Как упоминалось в статье Настройка ведения журнала в Azure SDK для 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 использовать его для ведения журнала. Поскольку Azure SDK для Java работает со всеми платформами ведения журналов SLF4J, ознакомьтесь с руководством пользователя SLF4J, чтобы получить дополнительные сведения. Если вы используете Logback, на веб-сайте этого средства также можно найти большое количество руководств по настройке. Дополнительные сведения см. в разделеНастройка Logback документации по Logback.

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