第 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 的所有消息及其拥有的依赖关系。其他依赖项(如 JSF)无法获得覆盖的区域设置。

若要使用不同于系统默认值的区域设置启动 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"