4.2. 使用 JBoss Logging Framework 进行日志记录


4.2.1. 关于 JBoss Logging

JBoss Logging 是包含在 JBoss EAP 中的应用程序日志框架。它提供了一种向应用添加日志的简便方法。您可以向应用添加代码,以使用框架以定义的格式发送日志消息。当应用部署到应用服务器时,服务器可以捕获这些消息,并根据服务器的配置显示或写入到 文件中。

JBoss Logging 提供以下功能:

  • 种创新且易于使用的日志记录器。类型日志记录器是一个带有 org.jboss.logging.annotations.MessageLogger 注解的日志记录器接口。例如,请参阅 创建国际化的日志记录器、消息和例外。
  • 完全支持国际化和本地化.转换器在属性文件中处理消息捆绑包,而开发人员则使用接口和注释。详情请查看 国际化和本地化。
  • 构建时间工具,用于生成用于生产类型日志记录器和类型日志器的运行时生成以进行开发的 类型日志记录器。

此流程演示了如何使用 JBoss Logging 向应用添加日志。

重要

如果使用 Maven 构建项目,您必须将 Maven 配置为使用 JBoss EAP Maven 存储库。如需更多信息,请参阅 配置 JBoss EAP Maven 存储库

  1. JBoss Logging JAR 文件必须位于应用程序的构建路径中。

    • 如果使用红帽代码Ready Studio 构建,请从 Project 菜单中选择 Properties,然后选择 Targeted Runtimes 并确保选中 JBoss EAP 的运行时。

      注意

      如果您在 Red Hat CodeReady Studio 中将 Target runtime 设为 7.4 或更新的运行时版本,则您的项目与 Jakarta EE 8 规范兼容。

    • 如果使用 Maven 构建项目,请确保将 jboss-logging 依赖项添加到项目的 pom.xml 文件中,以访问 JBoss Logging 框架:

      <dependency>
      	<groupId>org.jboss.logging</groupId>
      	<artifactId>jboss-logging</artifactId>
      	<version>3.3.0.Final-redhat-1</version>
      	<scope>provided</scope>
      </dependency>
      Copy to Clipboard Toggle word wrap

      jboss-eap-jakartaee8 BOM 管理 jboss-logging 的版本。如需了解更多详细信息,请参阅 管理项目依赖项。有关登录应用的工作示例,请参见 JBoss EAP 附带 的日志 快速入门。

    您不需要将 JAR 包含在您的构建的应用中,因为 JBoss EAP 将它们提供给已部署的应用。

  2. 对于您要添加日志的每个类:

    1. 为您要使用的 JBoss Logging 类命名空间添加导入语句。您至少需要以下导入:

      import org.jboss.logging.Logger;
      Copy to Clipboard Toggle word wrap
    2. 创建 org.jboss.logging.Logger 实例,并通过调用静态方法 Logger.getLogger(Class) 进行初始化。建议将它创建为各个类的一个实例变量。

      private static final Logger LOGGER = Logger.getLogger(HelloWorld.class);
      Copy to Clipboard Toggle word wrap
  3. 在您要发送日志消息的代码中调用 Logger 对象方法。

    日志器具 有许多不同的方法,具有不同参数以用于不同类型的消息。使用以下方法发送带有对应日志级别和消息参数的日志消息,作为 字符串:

    LOGGER.debug("This is a debugging message.");
    LOGGER.info("This is an informational message.");
    LOGGER.error("Configuration file not found.");
    LOGGER.trace("This is a trace message.");
    LOGGER.fatal("A fatal error occurred.");
    Copy to Clipboard Toggle word wrap

    有关 JBoss Logging 方法的完整列表,请参阅 Logging API 文档。

以下示例从属性文件加载应用的自定义配置。如果未找到指定的文件,则会记录 aERROR 级别的日志消息。

示例:使用 JBoss Logging 的应用程序日志记录

import org.jboss.logging.Logger;
public class LocalSystemConfig
{
   private static final Logger LOGGER = Logger.getLogger(LocalSystemConfig.class);

   public Properties openCustomProperties(String configname) throws CustomConfigFileNotFoundException
   {
      Properties props = new Properties();
      try
      {
         LOGGER.info("Loading custom configuration from "+configname);
         props.load(new FileInputStream(configname));
      }
      catch(IOException e) //catch exception in case properties file does not exist
      {
         LOGGER.error("Custom configuration file ("+configname+") not found. Using defaults.");
         throw new CustomConfigFileNotFoundException(configname);
      }

      return props;
   }
}
Copy to Clipboard Toggle word wrap

4.2.3. 将 Apache Log4j2 API 添加到应用程序中

您可以使用 Apache Log4j2 API 而不是 Apache Log4j API 将应用程序日志记录消息发送到您的 JBoss LogManager 实施。

重要

JBoss EAP 7.4 发行版本支持 Log4J2 API,但不支持 Apache Log4j2 Core 实现、org.apache.logging.log4j:log4j-core 或其配置文件。

流程

  1. org.apache.logging.log4j:log4j-api 作为依赖项添加到项目 pom.xml 文件。

    org.apache.logging.log4j:log4j-api 添加到 pom.xml 文件示例。

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
        <scope>provided</scope>
    </dependency>
    Copy to Clipboard Toggle word wrap

    注意

    log4j-api Maven 依赖项是指 Apache Log4j2 API。log4j Maven 依赖项指的是 Apache Log4j API。

    记录应用程序消息时,您会将该消息发送到您的 JBoss Log Manager 实施。

  2. 可选: 要排除 org.apache.logging.log4j.api 模块,必须从 jboss-deployment-structure.xml 文件中排除该模块,或者将 add-logging-api-dependencies 属性设置为 false

4.2.4. 创建 Log4j2 LogManager 实现

您可以通过在项目的 pom.xml 文件中包含 Log4j2 API,在应用程序中使用 Log4j2 LogManager。另外,您必须在项目的 pom.xml 文件中包括对应的 Log4j2 LogManager 版本。

流程

  1. 通过排除 jboss-deployment-structure.xml 文件中的 org.apache.logging.log4j.api 模块依赖项来禁用 Log4j 日志记录 依赖项。
  2. log4j-api 依赖项和 log4j2 依赖项添加到项目 pom.xml 文件。

    log4j-api 依赖项和 log4j2 依赖项添加到 pom.xml 文件示例。

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.logging.log4j2</groupId>
        <artifactId>log4j2-core</artifactId>
        <version>${version.org.apache.logging.log4j}</version>
    </dependency>
    Copy to Clipboard Toggle word wrap

    注意

    log4j-api Maven 依赖项是指 Apache Log4j2 API。log4j Maven 依赖项指的是 Apache Log4j API。

    记录应用消息时,您会将该消息发送到 Log4j2 LogManager 实施。

  3. 可选: 要排除 org.apache.logging.log4j.api 模块,您必须从 jboss-deployment-structure.xml 文件中排除该模块,或者将 add-logging-api-dependencies 属性设为 false。然后,您必须将 log4j2-apilog4j2-core 添加到项目 pom.xml 文件。

    注意

    如果对 jboss-deployment-structure.xml 文件进行更改,请对部署应用更改。如果您对 add-logging-api-dependencies 属性进行更改,请对所有已部署的应用程序应用更改。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat