第 11 章 使用 JBoss EAP 记录

JBoss EAP 提供高度可配置的日志记录设施,供其自身的内部使用和部署的应用使用。logging 子系统基于 JBoss LogManager,除了 JBoss Logging 外还支持多个第三方应用日志框架。

11.1. 关于服务器日志记录

11.1.1. 服务器日志记录

默认情况下,所有 JBoss EAP 日志条目都写入 server.log 文件。该文件的位置取决于您的操作模式。

  • 单机服务器: EAP_HOME/standalone/log/server.log
  • 受管域: EAP_HOME/domain/servers/SERVER_NAME/log/server.log

此文件通常称为服务器日志。如需更多信息,请参阅 Root Logger 部分。

11.1.2. 引导日志记录

在启动期间,JBoss EAP 会记录有关 Java 环境和每个服务的启动信息。此日志在故障排除时非常有用。默认情况下,所有日志条目写入 服务器日志 中。

启动日志记录配置在 logging.properties 配置文件中指定,该文件处于活动状态,直到 JBoss EAP 日志记录 子系统启动并接管为止。该文件的位置取决于您的操作模式。

  • 单机服务器: EAP_HOME/standalone/configuration/logging.properties
  • 受管域:

    域控制器和每一服务器都有一个 logging.properties 文件。

    • 域控制器: EAP_HOME/domain/configuration/logging.properties
    • Server: EAP_HOME/domain/servers/SERVER_NAME/data/logging.properties
警告

建议您不要直接编辑 logging.properties 文件,除非您了解需要它的特定用例。在进行此操作前,建议您从 红帽客户门户网站创建一个 支持问题单。

在启动时会覆盖对 logging.properties 文件手动进行的更改。

11.1.2.1. 查看引导错误

对 JBoss EAP 进行故障排除时,首先要执行的步骤之一是检查启动过程中发生的错误。然后,您可以使用提供的信息来诊断和解决其原因。在对启动错误进行故障排除时,打开支持案例。

有两种方法可以查看引导错误,每种方法都各有优点。您可以使用 read- boot-errors 管理 CLI 命令检查 server.log 文件 或读取 引导错误。

检查服务器日志文件

您可以打开 server.log 文件,以查看启动期间发生的任何错误。

通过这个方法,您可以查看每个错误消息以及可能的相关信息,以便您获取有关 为何 发生错误的更多信息。它还允许您以纯文本格式查看错误消息。

  1. 在文件查看器中打开 server.log 文件。
  2. 导航到文件的末尾。
  3. 向后搜索 WFLYSRV0049 消息标识符,该标识符标记最新启动序列的开始。
  4. 从该刻搜索日志,以查找 for ERROR 实例。每个实例都将包含错误的描述并列出涉及的模块。

以下是 server.log 日志文件中的示例错误描述:

2016-03-16 14:32:01,627 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.undertow.listener.default: org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
        at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:142)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.BindException: Address already in use
        ...
从管理 CLI 中读取引导错误

您可以在服务器启动时使用 read-boot-errors 管理 CLI 命令查看错误。

此方法不需要访问服务器文件系统,这对于负责监控没有文件系统访问权限的错误的任何人都有用。由于它是管理 CLI 命令,因此可以在 脚本中使用。例如,您可以编写一个启动多个 JBoss EAP 实例的脚本,然后检查启动时发生的错误。

运行以下管理 CLI 命令:

/core-service=management:read-boot-errors

将列出启动过程中出现的任何错误。

{
    "outcome" => "success",
    "result" => [
        {
            "failed-operation" => {
                "operation" => "add",
                "address" => [
                    ("subsystem" => "undertow"),
                    ("server" => "default-server"),
                    ("http-listener" => "default")
                ]
            },
            "failure-description" => "{\"WFLYCTL0080: Failed services\" => {\"jboss.undertow.listener.default\" => \"org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
    Caused by: java.net.BindException: Address already in use\"}}",
            "failed-services" => {"jboss.undertow.listener.default" => "org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
    Caused by: java.net.BindException: Address already in use"}
        }
        ...
    ]
}

11.1.3. 垃圾收集器日志记录

垃圾回收日志记录将所有垃圾回收活动记录到纯文本日志文件。这些日志文件可用于诊断目的。默认情况下, IBM Java 开发工具包外,所有支持的配置上的 JBoss EAP 单机服务器都启用了垃圾回收日志记录。

垃圾收集日志的位置为 EAP_HOME/standalone/log/gc.log.DIGIT.current。垃圾回收日志的收集日志限制为 3 MB,最多五个文件会被轮转。

强烈建议启用垃圾回收日志记录,因为垃圾回收日志记录在故障排除中非常有用,它的开销应最小。但是,您可以在启动服务器前将 GC_LOG 变量设置为 false,为单机服务器禁用垃圾回收日志。例如:

$ export GC_LOG=false
$ EAP_HOME/bin/standalone.sh

11.1.4. 默认日志文件位置

为默认日志记录配置创建以下日志文件:默认配置使用定期日志处理程序写入服务器日志文件。

表 11.1. 单机服务器的默认日志文件

日志文件描述

EAP_HOME/standalone/log/server.log

包含服务器日志消息,包括服务器启动消息。

EAP_HOME/standalone/log/gc.log.DIGIT.current

包含垃圾回收详细信息。

表 11.2. 受管域的默认日志文件

日志文件描述

EAP_HOME/domain/log/host-controller.log

包含与主机控制器启动相关的日志消息。

EAP_HOME/domain/log/process-controller.log

包含与进程控制器启动相关的日志消息。

EAP_HOME/domain/servers/SERVER_NAME/log/server.log

包含指定服务器的日志消息,包括服务器启动消息。

11.1.5. 设置服务器的默认位置

您可以通过在相应的启动配置文件中设置 JVM 属性来配置 JBoss EAP 的默认区域设置。启动配置文件是单机服务器的 EAP_HOME/bin/standalone.conf,或者受管域的 EAP_HOME/bin/domain.conf

注意

对于 Windows Server,JBoss EAP 启动配置文件为 standalone.conf.batdomain.conf.bat

已国际化和本地化的日志消息将使用此默认区域设置。有关 创建国际化日志消息 的信息,请参见 JBoss EAP 开发指南

设置语言

通过使用 JAVA_OPTS 变量设置 user.language 属性,以指定语言。例如,向启动配置文件添加以下行以设置法语区域设置:

JAVA_OPTS="$JAVA_OPTS -Duser.language=fr"

已国际化和本地化的日志消息现在将以法语输出。

设置语言和地区

除了语言之外,还可能需要通过设置 用户.国家属性来指定国家/ 地区。例如,在启动配置文件中添加以下行,为巴西设置葡萄牙区域设置:

JAVA_OPTS="$JAVA_OPTS -Duser.language=pt -Duser.country=BR"

已国际化和本地化的日志消息现在将在巴西葡萄牙语中输出。

使用 org.jboss.logging.locale 属性设置服务器位置

您可以配置 org.jboss.logging.locale 属性,以覆盖使用 JBoss Logging 记录的消息的区域设置,包括来自 JBoss EAP 的所有消息及其拥有的依赖关系。其他依赖项(如 Jakarta Server Faces)无法获得覆盖的区域设置。

若要使用不同于系统默认值的区域设置启动 JBoss EAP 服务器,您可以编辑 EAP_HOME/bin/standalone.confEAP_HOME/bin/domain.conf 文件,具体取决于您的操作模式,并附加以下命令来为所需的区域设置 JVM 参数:属性的值必须以 BCP 47 格式指定。例如,要设置巴西葡萄牙语,请使用 pt-BR。

JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.locale=pt-BR"