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

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

本文提供如何使用 Log4J 2.x 版本的指导,但 Azure SDK for Java 同样支持 Log4J 1.x。 若要启用 log4j 日志记录,必须执行以下两项操作:

  1. 将 log4j 库作为依赖项包括在内,
  2. 在 /src/main/resources 项目目录下创建配置文件(log4j2.properties 或 log4j2.xml)

有关如何配置 log4j 的详细信息,请参阅 Welcome to Log4j 2(欢迎使用 Log4j 2)。

添加 Maven 依赖项

若要添加 Maven 依赖项,请在项目的 pom.xml 文件中包含以下 XML。 将 2.16.0 版本号替换为 Apache Log4j SLF4J 绑定页上显示的最新已发布版本号。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.16.0</version>
</dependency>

注意

由于已知的漏洞 CVE-2021-44228,请确保使用 Log4j 版本 2.16 或更高版本

配置 Log4j

可以通过两种常见方法配置 Log4j:通过外部属性文件或通过外部 XML 文件。 这些方法概述如下。

使用属性文件

可以将名为 log4j2.properties的平面属性文件放置在项目的 /src/main/resources 目录中。 此文件应采用以下形式:

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d %5p [%t] %c{3} - %m%n

logger.app.name = com.azure.core
logger.app.level = ERROR

rootLogger.level = info
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

使用 XML 文件

可以将名为 log4j2.xml的 XML 文件放置在项目的 /src/main/resources 目录中。 此文件应采用以下形式:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %5p [%t] %c{3} - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.azure.core" level="error" additivity="true">
            <appender-ref ref="console" />
        </Logger>
        <Root level="info" additivity="false">
            <appender-ref ref="console" />
        </Root>
     </Loggers>
</Configuration>

后续步骤

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

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