4.2. 调试日志记录


Eclipse Vert.x 提供了一个内置日志记录 API。Eclipse Vert.x 的默认日志实现使用 Java JDK 提供的 java.util.logging 库。另外,Eclipse Vert.x 允许您使用不同的日志记录框架,如 Log4J (Eclipse Vert.x 支持 Log4J v1 和 v2)或 SLF4J

使用 java.util.logging 为 Eclipse Vert.x 应用程序配置调试日志记录:

  • application.properties 文件中设置 java.util.logging.config.file 系统属性。此变量的值必须与 java.util.logging 配置文件的 名称对应。这样可确保 LogManager 在应用程序启动时初始化 java.util.logging
  • 另外,还可在 Maven 项目的类路径中添加带有 vertx-default-jul-logging.properties 名称的 java.util.logging 配置文件。Eclipse Vert.x 将使用该文件来配置应用程序启动时 java.util.logging

通过 Eclipse Vert.x,您可以使用 LogDelegateFactory 指定自定义日志记录后端,它为 Log4JLog4J2SLF4J 库提供预建的实施。与默认情况下 Java 中包含的 java.util.logging 不同,其他后端需要您将相应的库指定为应用程序的依赖项。

4.2.2. 在 Eclipse Vert.x 应用中添加日志输出。

  1. 要向应用程序添加日志记录,请创建一个 io.vertx.core.logging.Logger

    Logger logger = LoggerFactory.getLogger(className);
    
    logger.info("something happened");
    logger.error("oops!", exception);
    logger.debug("debug message");
    logger.warn("warning");
    Copy to Clipboard Toggle word wrap
    Important

    日志记录后端使用不同的格式来代表参数化消息中的可替换令牌。如果您依赖参数化日志记录方法,您将无法在不更改代码的情况下切换日志后端。

4.2.3. 为应用程序指定自定义日志框架

如果您不希望 Eclipse Vert.x 使用 java.util.logging,将 io.vertx.core.logging.Logger 配置为使用不同的日志记录框架,如 Log4JSLF4J

  1. vertx.logger-delegate-factory-class-name 系统属性的值设置为实现 LogDelegateFactory 接口的类名称。Eclipse Vert.x 为以下库提供预建的实现,其对应的预定义类名称如下:

    Expand
    程序库类名称

    Log4J v1

    io.vertx.core.logging.Log4jLogDelegateFactory

    Log4J v2

    io.vertx.core.logging.Log4j2LogDelegateFactory

    SLF4J

    io.vertx.core.logging.SLF4JLogDelegateFactory

    使用自定义库实施日志记录时,请确保相关的 Log4JSLF4J jars 包含在应用程序的依赖项中。

    Important

    通过 Eclipse Vert.x 提供的 Log4J v1 委派不支持参数化消息。Log4J v2SLF4J 的委派都使用 {} 语法。java.util.logging 委派依赖于使用 {n} 语法的 java.text.MessageFormat

Netty 是一个库,供 VertX 用于管理应用程序中异步网络通信。

Netty:

  • 能够快速轻松地开发网络应用程序,如协议服务器和客户端。
  • 简化和简化网络编程,如 TCP 和 UDP 套接字服务器开发。
  • 提供统一的 API,用于管理阻塞和非阻塞连接。

Netty 不依赖于使用系统属性的外部日志记录配置。相反,它会基于对项目中的 Netty 类可见的日志记录库实施日志配置。Netty 会尝试按照以下顺序使用库:

  1. SLF4J
  2. Log4J
  3. java.util.logging 作为回退选项

您可以通过在应用程序 的主 方法的开头添加以下代码,将 io.netty.util.internal.logging.InternalLoggerFactory 设置为特定日志记录器:

// Force logging to Log4j
InternalLoggerFactory.setDefaultFactory(Log4JLoggerFactory.INSTANCE);
Copy to Clipboard Toggle word wrap

4.2.5. 访问 OpenShift 上的调试日志

启动您的应用并与之交互,以查看 OpenShift 中的调试语句。

前提条件

  • 已安装并验证 oc CLI 客户端。
  • 启用调试日志记录的基于 Maven 的应用。

流程

  1. 将应用程序部署到 OpenShift:

    $ mvn clean oc:deploy -Popenshift
    Copy to Clipboard Toggle word wrap
  2. 查看日志:

    1. 使用您的应用程序获取 pod 的名称:

      $ oc get pods
      Copy to Clipboard Toggle word wrap
    2. 开始监视日志输出:

      $ oc logs -f pod/MY_APP_NAME-2-aaaaa
      Copy to Clipboard Toggle word wrap

      保持打开日志输出的终端窗口,以便您可以观察日志输出。

  3. 与应用程序交互:

    例如,以下命令基于一个示例 REST API 级别 0 应用程序,其中 debug logging 设置为在 /api/greeting 方法中记录 消息 变量:

    1. 获取应用程序的路由:

      $ oc get routes
      Copy to Clipboard Toggle word wrap
    2. 在应用程序的 /api/greeting 端点上发出 HTTP 请求:

      $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
      Copy to Clipboard Toggle word wrap
  4. 返回到包含 Pod 日志的窗口,并检查日志中的调试日志消息。

    ...
    Feb 11, 2017 10:23:42 AM io.openshift.MY_APP_NAME
    INFO: Greeting: Hello, Sarah
    ...
    Copy to Clipboard Toggle word wrap
  5. 要禁用 debug 日志记录,请更新日志记录配置文件,如 src/main/resources/vertx-default-jul-logging.properties,删除您的类的日志配置并重新部署您的应用程序。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部