使用 Azure SDK for Java 和 Logback 进行日志记录

本文概述如何使用 Logback 向使用 Azure SDK for Java 的应用程序添加日志记录。 如在 Azure SDK for Java 中配置日志记录中所述,所有 Azure 客户端库都通过 SLF4J 进行日志记录,因此可以使用诸如 Logback 之类的记录框架。

若要启用 Logback 日志记录,必须执行以下两项操作:

  1. 将 Logback 库作为依赖项包括在内,
  2. 在 /src/main/resources 项目目录中创建一个名为 logback.xml 的文件

有关如何配置 Logback 的详细信息,请参阅 Logback 文档中的 Logback configuration(Logback 配置)。

添加 Maven 依赖项

若要添加 Maven 依赖项,请在项目的 pom.xml 文件中包含以下 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 日志记录,请在项目的 ./src/main/resources 目录中创建一个名为 logback.xml 的文件。 此文件包含用于自定义日志记录需求的日志记录配置。 有关如何配置 logback.xml 的详细信息,请参阅 Logback 文档中的 Logback configuration(Logback 配置)

控制台日志记录

你可以创建 Logback 配置以记录到控制台,如以下示例所示。 此示例配置为记录所有信息级别或更高级别的日志记录事件,无论它们来自何处。

<?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 Core 错误

以下示例配置类似于以前的配置,但它降低了日志记录来自所有 com.azure.core 打包类(包括子包)的级别。 这样一来,系统将记录所有信息级别及更高级别的信息,但 com.azure.core 除外,其仅记录错误级别及更高级别的信息。 例如,如果发现 com.azure.core 中的代码干扰过多,则可以使用此方法。 这种配置也可通过多种方式实现。 例如,如果要从 com.azure.core 中的类获取更多调试信息,可以将此设置更改为“调试”。

可以对特定类或特定包的日志记录进行精细控制。 如下所示, 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 配置。 为此,通过将以下行添加到 Spring /src/main/resources/application.properties 文件中,将 logging.config 属性配置为指向 logback.xml 配置文件

logging.config=classpath:logback.xml

后续步骤

本文介绍了 Logback 的配置,以及如何使 Azure SDK for Java 使用它来进行日志记录。 由于 Azure SDK for Java 适用于所有 SLF4J 记录框架,因此请考虑查看 SLF4J user manual(SLF4J 用户手册)了解更多详细信息。 如果使用 Logback,则其网站上还会提供大量的配置指导。 有关详细信息,请参阅 Logback 文档中的 Logback configuration(Logback 配置)。

掌握日志记录后,请考虑查看 Azure 提供到 SpringMicroProfile 等框架中的集成。