11.7. 配置日志格式

日志格式ter 定义来自该处理程序的日志消息的外观。日志记录 子系统允许您配置以下类型的日志格式器:

11.7.1. 配置模式格式

您可以创建名为模式格式器,可在日志处理程序之间用于格式化日志消息。

重要

如果您要为日志记录配置集配置此日志格式器,则命令的开头为 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 而不是 /subsystem=logging/

此外,如果您在受管域中运行,请在命令前加上 /profile=PROFILE_NAME

创建模式格式

在定义模式格式器时,您可以提供一个用于格式化日志消息的模式字符串。如需有关模式语法的更多信息,请参阅 Pattern Formatter 的格式字符

/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:add(pattern=PATTERN)

例如,默认配置使用以下日志格式器字符串将消息记录到服务器日志: %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c](%t)%s%s%e%e%n。这会创建类似于下方格式的日志消息。

2016-03-18 15:49:32,075 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

您还可以定义颜色映射,为不同的日志级别分配颜色。格式为以逗号分隔的 LEVEL :COLOR 列表。

  • 有效的级别: ter ter fineconfigtracedebuginfo、warning error fatal严重
  • 有效颜色: 绿色红色黄色、蓝色、mag enta、c yan、白色、亮色、亮度 亮色、亮色、亮色、 亮色亮色亮色、亮色亮度、精英代理、度、 亮度、 亮度
/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:write-attribute(name=color-map,value="LEVEL:COLOR,LEVEL:COLOR")

您还可以使用管理控制台配置模式日志格式器:

  1. 在浏览器中打开管理控制台。
  2. 选择 ConfigurationSubsystemsLogging
  3. 选择 Configuration,然后单击 View
  4. 选择 Formatter,然后选择 Pattern Formatter 选项。

11.7.2. 配置 JSON 日志格式器

您可以创建一个 JSON 日志格式器,以将日志消息格式化为 JSON。

重要

如果您要为日志记录配置集配置此日志格式器,则命令的开头为 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 而不是 /subsystem=logging/

此外,如果您在受管域中运行,请在命令前加上 /profile=PROFILE_NAME

添加 JSON 日志格式
/subsystem=logging/json-formatter=JSON_FORMATTER_NAME:add(pretty-print=true, exception-output-type=formatted)

这会创建类似于下方格式的日志消息。

{
    "timestamp": "2018-10-18T13:53:43.031-04:00",
    "sequence": 62,
    "loggerClassName": "org.jboss.as.server.logging.ServerLogger_$logger",
    "loggerName": "org.jboss.as",
    "level": "INFO",
    "message": "WFLYSRV0025: JBoss EAP 7.4.0.GA (WildFly Core 15.0.2.Final-redhat-00001) started in 5227ms - Started 317 of 556 services (343 services are lazy, passive or on-demand),
    "threadName": "Controller Boot Thread",
    "threadId": 22,
    "mdc": {
    },
    "ndc": "",
    "hostName": "localhost.localdomain",
    "processName": "jboss-modules.jar",
    "processId": 7461
}
添加 Logstash JSON 日志格式ter
注意

您可以修改 JSON 日志格式输出键并添加静态元数据。JSON 日志格式器的主要用途是在 JSON 中格式化日志消息。logstash 会消耗这个 JSON 输出,并搜索字段 @timestamp@version。以下示例创建了 JSON 日志格式,用于格式化 Logstash 的信息。

/subsystem=logging/json-formatter=logstash:add(exception-output-type=formatted, key-overrides=[timestamp="@timestamp"], meta-data=[@version=1])

您可以使用 JSON 格式属性,如下所述:

  • key-overrides 属性可用于覆盖定义的键的名称。
  • 例外可以通过将 exception-output-type 属性设置为 格式化来格式化 为对象。
  • 可以通过将 exception-output-type 属性设置为 detailed 来包含异常堆栈追踪。
  • 通过将 exception-output-type 设置为 详细和格式,可以包含例外,作为对象和堆栈追踪。
  • 可以使用 meta-data 属性将元数据添加到日志记录中。

如需有关 JSON 格式器属性的更多信息,请参阅 JSON 日志格式ter Attributes

您还可以使用管理控制台配置 JSON 日志格式器:

  1. 在浏览器中打开管理控制台。
  2. 选择 ConfigurationSubsystemsLogging
  3. 选择 Configuration,然后单击 View
  4. 选择 Formatter,然后选择 JSON Formatter 选项。

11.7.3. 配置 XML 日志格式

您可以创建一个 XML 日志格式器,以将日志消息格式化为 XML。

重要

如果您要为日志记录配置集配置此日志格式器,则命令的开头为 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 而不是 /subsystem=logging/

此外,如果您在受管域中运行,请在命令前加上 /profile=PROFILE_NAME

添加 XML 日志格式
/subsystem=logging/xml-formatter=XML_FORMATTER_NAME:add(pretty-print=true, exception-output-type=detailed-and-formatted)

这会创建类似于下方所示的日志消息。

<record>
    <timestamp>2018-10-18T13:55:53.419-04:00</timestamp>
    <sequence>62</sequence>
    <loggerClassName>org.jboss.as.server.logging.ServerLogger_$logger</loggerClassName>
    <loggerName>org.jboss.as</loggerName>
    <level>INFO</level>
    <message>WFLYSRV0025: {ProductCurrentVersionExamples} (WildFly Core 10.0.0.Final-redhat-20190924) started in 6271ms - Started 495 of 679 services (331 services are lazy, passive or on-demand)</message>
    <threadName>Controller Boot Thread</threadName>
    <threadId>22</threadId>
    <mdc>
    </mdc>
    <ndc></ndc>
    <hostName>localhost.localdomain</hostName>
    <processName>jboss-modules.jar</processName>
    <processId>7790</processId>
</record>
添加密钥覆盖 XML 日志格式
/subsystem=logging/xml-formatter=XML_FORMATTER_NAME:add(pretty-print=true, print-namespace=true, namespace-uri="urn:custom:1.0", key-overrides={message=msg, record=logRecord, timestamp=date}, print-details=true)

您可以使用 XML 格式属性,如下所述:

  • key-overrides 属性可用于覆盖定义的键的名称。
  • 例外可以通过将 exception-output-type 属性设置为 格式化来格式化 为对象。
  • 可以通过将 exception-output-type 属性设置为 detailed 来包含异常堆栈追踪。
  • 通过将 exception-output-type 设置为 详细和格式,可以包含例外,作为对象和堆栈追踪。
  • 可以使用 meta-data 属性将元数据添加到日志记录中。

有关 XML 格式 器属性的更多信息,请参阅 XML 日志格式条件属性

您还可以使用管理控制台配置 XML 日志格式器:

  1. 在浏览器中打开管理控制台。
  2. 选择 ConfigurationSubsystemsLogging
  3. 选择 Configuration,然后单击 View
  4. 选择 Formatter,然后选择 XML Formatter 选项。

11.7.4. 配置自定义日志格式器

您可以创建自定义日志格式器,供日志处理程序用于格式化日志消息。

本节介绍如何使用管理 CLI 配置自定义日志格式器。

配置自定义日志格式器
重要

如果您要为日志记录配置集配置此日志格式器,则命令的开头为 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ 而不是 /subsystem=logging/

此外,如果您在受管域中运行,请在命令前加上 /profile=PROFILE_NAME

  1. 添加自定义日志格式器。

    在添加自定义日志格式器时,您必须指定格式器的 Java 类以及包含它的 JBoss EAP 模块。该类必须扩展 java.util.logging.Formatter

    注意

    您必须已创建了包含自定义格式的模块,否则此命令将失败。

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:add(class=CLASS_NAME, module=MODULE_NAME)
  2. 设置日志格式器所需的属性。

    属性必须能够通过 setter 方法访问。

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:write-attribute(name=properties.PROPERTY_NAME,value=PROPERTY_VALUE)
  3. 将自定义格式器分配到日志处理程序。

    以下管理 CLI 命令分配可由定期轮转文件处理程序使用的自定义格式器:

    /subsystem=logging/periodic-rotating-file-handler=FILE_HANDLER_NAME:write-attribute(name=named-formatter, value=CUSTOM_FORMATTER_NAME)
自定义 XML 格式示例

以下示例配置了自定义 XML 格式。它使用 org.jboss .logmanager 模块中提供的 java.util.logging. XMLFormatter 类,并将它分配给控制台日志处理程序。

/subsystem=logging/custom-formatter=custom-xml-formatter:add(class=java.util.logging.XMLFormatter, module=org.jboss.logmanager)
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=custom-xml-formatter)

使用此格式器的日志消息将如下格式:

<record>
  <date>2016-03-23T12:58:13</date>
  <millis>1458752293091</millis>
  <sequence>93963</sequence>
  <logger>org.jboss.as</logger>
  <level>INFO</level>
  <class>org.jboss.as.server.BootstrapListener</class>
  <method>logAdminConsole</method>
  <thread>22</thread>
  <message>WFLYSRV0051: Admin console listening on http://%s:%d</message>
  <param>127.0.0.1</param>
  <param>9990</param>
</record>
使用管理控制台配置自定义日志格式器

您还可以使用管理控制台配置日志格式器。

  1. 在浏览器中打开管理控制台。
  2. 选择 ConfigurationSubsystemsLogging
  3. 选择 Configuration,然后单击 View
  4. 选择 Formatter,然后选择 Custom Formatter 选项。