使用 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 配置

添加 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 配置

控制台日志记录

可以创建 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 的配置及如何在 Java 的 Azure SDK 中使用它进行日志记录。 由于 Azure SDK for Java 适用于所有 SLF4J 日志记录框架,因此请考虑查看 SLF4J 用户手动 以了解更多详细信息。 如果使用 Logback,则其网站上也有大量配置指南。 有关详细信息,请参阅 Logback 文档中的 Logback 配置

掌握日志记录功能后,请考虑研究 Azure 提供的与 SpringMicroProfile 等框架的集成。