10.3. 日志记录子系统配置概述
JBoss EAP 日志记录子系统 使用 日志类别 和 日志处理程序 进行配置。日志类别指定要捕获的消息,而日志处理程序定义了如何处理这些消息,例如将它们写入磁盘或将它们发送到控制台。
应用程序日志记录配置集 允许您创建唯一命名的日志配置,这些配置可以分配给部署或多个部署,与主日志记录设置分开。日志记录 配置集配置与主日志记录子系统的配置几乎相同。
10.3.1. 根日志记录器配置 复制链接链接已复制到粘贴板!
JBoss EAP 根日志记录器捕获在由日志记录器未捕获的指定日志级别或更高级别的所有日志消息。但是,如果定义的日志记录器将 use-parent-handlers 设置为 true,并且也定义了处理程序,则定义的日志记录器和根日志记录器将用于处理消息。
默认情况下,根日志记录器使用控制台和定期日志处理程序,它写入到 server.log 文件。此文件通常称为服务器日志。
10.3.2. JBoss EAP 中的日志类别 复制链接链接已复制到粘贴板!
日志类别定义一组用于捕获的日志消息,以及处理这些消息的一个或多个日志处理程序。
日志消息由指定的原始卷和日志级别决定。可以指定任何字符串值。但是,首选软件包名称或类名称。日志记录器的名称使用点表示法来指定,例如 Logger.getLogger ("example.logger.name")。日志管理器处理名称的每个部分,并检查匹配的配置。如果 found 和 use-parent-handlers 设为 false,进程将停止。如果没有定义配置,或者 use-parent-handlers 被设置为 true,则日志管理器会继续检查父名称,如 "example.logger"。日志记录器的配置取决于日志记录器的创建方式,而不是软件包或类名称。
虽然日志类别通常基于 Java 软件包和类名称,但它可以是 Logger.getLogger (LOGGER_NAME) 方法指定的任何名称。
日志记录器可以分配有处理程序。如果 use-parent-handlers 设为 false,则没有更高级别的日志记录器将处理消息,即使日志记录器确定该消息是 loggable。例如,如果日志记录器名称为 org.jboss.as.logging,并且配置了 use-parent-handlers=false,则不会检查 org.jboss.as logger。
10.3.3. JBoss EAP 中的日志处理程序 复制链接链接已复制到粘贴板!
日志处理程序定义捕获的日志消息的记录方式,并指定条目的目的地和格式。了解不同类型的日志处理程序对于有效的日志记录配置至关重要,因为每种类型满足满足各种需求的不同需要。
日志处理程序必须添加到至少一个日志记录器才能处于活动状态。
10.3.3.1. 日志处理程序的类型 复制链接链接已复制到粘贴板!
日志处理程序分为几种类型,它们决定了日志条目是如何处理和存储的。每种类型都有不同的功能来满足各种日志记录要求:
-
控制台 :将日志消息写入主机操作系统的标准 out、
stdout或标准错误stderr、流。当 JBoss EAP 从命令行提示符运行时,将显示这些消息。来自控制台日志处理程序的消息不会被保存,除非操作系统被配置为捕获标准输出或标准错误流。 - 文件 :将日志消息写入指定的文件。
- periodic: 将日志消息写入命名的文件,直到指定的时间段过。之后,该文件使用时间戳进行重命名,处理程序将继续写入使用原始名称的新创建日志文件。
- 大小 :将日志消息写入指定文件,直到文件达到指定大小。当文件达到该大小时,使用数字后缀对其进行重命名,处理程序将继续写入带有原始名称的新创建的日志文件。每个大小日志处理程序都必须指定要以这种方式保留的最大文件数。
- periodic Size: 将日志消息写入指定文件,直到文件达到指定大小或指定时间段过期。然后,处理程序会重命名文件,并继续写入新创建的带有原始名称的日志文件。此处理程序组合了定期日志处理程序的功能。
- syslog :将消息发送到远程日志记录服务器。这可让多个应用程序将其日志消息发送到同一服务器以进行解析。
- 套接字 :通过套接字将日志消息发送到远程日志记录服务器。这可使用 TCP 或 UDP 套接字。
-
自定义 :允许您配置新的日志处理程序。自定义处理程序必须实施为扩展
java.util.logging.Handler并包含在模块中的 Java 类。您还可以使用 Log4J appender 作为自定义日志处理程序。 - async :为一个或多个其他日志处理程序提供异步行为。这对可能具有高延迟或性能问题的日志处理程序很有用,如将日志文件写入网络文件系统。
10.3.4. JBoss EAP 中支持的日志级别 复制链接链接已复制到粘贴板!
日志级别是一个枚举的值,表示日志消息的性质和严重性。作为开发人员,您可以使用您选择的日志记录框架的适当方法指定日志消息级别来发送消息。
JBoss EAP 支持由受支持的应用程序日志记录框架使用的所有日志级别。从最低到最高级别的最常用日志级别为 TRACE,DEBUG,INFO,WARN,ERROR, 和 FATAL。
日志级别可帮助日志类别和处理程序限制它们处理的消息。每个日志级别都有一个分配的数字值,表示其相对于其他日志级别的顺序。日志类别和处理程序被分配一个日志级别,仅处理该级别或更高级别的日志消息。例如,一个日志处理程序,其级别为 、WARN ERROR 和 FATAL 的消息。
| 日志级别 | value | 描述 |
|---|---|---|
| ALL | integer.MIN_VALUE | 提供所有日志消息。 |
| FINEST | 300 | - |
| FINER | 400 | - |
| TRACE | 400 |
|
| DEBUG | 500 |
|
| 正常的 | 500 | - |
| CONFIG | 700 | - |
| INFO | 800 |
|
| WARN | 900 |
|
| WARNING | 900 | - |
| ERROR | 1000 |
|
| 严重 | 1000 | - |
| FATAL | 1100 |
|
| OFF | integer.MAX_VALUE | 不显示任何日志消息。 |
ALL 是最低的日志级别,包括所有日志级别的消息。这提供了最多的日志。
FATAL 是最高日志级别,仅包含该级别的信息。这提供了最少的日志量。
10.3.5. JBoss EAP 中的日志格式器 复制链接链接已复制到粘贴板!
日志格式器用于格式化日志消息。您可以使用 named-formatter 属性为日志记录处理程序分配一个格式器。
10.3.5.1. 日志格式器的类型 复制链接链接已复制到粘贴板!
日志格式将分为几种类型,来确定如何格式化日志条目。
logging 子系统包括四种格式:
-
Pattern formatter: 以纯文本格式格式化日志消息。除了将 formatter 用作日志处理程序的
named-formatter属性外,您还可以将它用作formatter属性,而无需先创建 formatter 资源。 - JSON 格式 :以 JSON 格式格式化日志消息。
- XML 格式 :在 XML 中格式化日志消息.
-
自定义格式 :与处理程序搭配使用。大多数日志记录都以 printf 格式格式化。Formatters 可能需要调用
org.jboss.logmanager.ExtLogRecord"getFormattedMessage ()才能正确格式化。
10.3.6. 在 JBoss EAP 中记录的过滤表达式 复制链接链接已复制到粘贴板!
过滤器表达式使用 filter-spec 属性进行配置,根据各种条件记录日志消息。过滤器应用到原始未格式化的消息。您可以将过滤器添加到日志记录器或处理程序,但日志记录器过滤器优先于处理程序上的过滤器。
为根日志记录器指定的 filter-spec 不会被其他日志记录器继承。相反,必须为每个处理程序指定 filter-spec。
下表描述了日志的可用过滤器表达式:
| 过滤表达式 | 描述 |
|---|---|
| accept | 接受所有日志消息。 |
| deny | 拒绝所有日志消息。 |
| not[filter 表达式] | 返回单个过滤器表达式的反转值。例如:
|
| all[filter 表达式] | 从以逗号分隔的过滤器表达式列表中返回串联的值。例如:
|
| any[filter 表达式] | 从以逗号分隔的过滤器表达式列表中返回一个值。例如:
|
| levelChange[level] | 使用指定的级别更新日志记录。例如:
|
| levels[levels] | 使用以逗号分隔的级别列表中列出的级别过滤日志消息。例如:
|
| levelRange[minLevel,maxLevel] |
过滤指定级别范围内的日志消息。
|
| match["pattern"] | 使用提供的正则表达式过滤日志消息。例如:
|
| substitute["pattern","replacement value"] | 使用替换文本(second 参数)替换到模式(第一个参数)的第一个匹配项。例如:
|
| substituteAll["pattern","replacement value"] | 使用替换文本(秒)替换所有模式匹配的模式(第一个参数)。例如:
|
使用管理 CLI 配置过滤器表达式时,过滤文本中的转义逗号和引号,以确保以字符串的形式正确处理该值。您必须在逗号和引号前加上反斜杠(\),并在引号中换出整个表达式。以下是正确转义 替换All ("WFLY","YLFW")的示例。
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")
10.3.7. JBoss EAP 中的隐式日志记录依赖项 复制链接链接已复制到粘贴板!
默认情况下,JBoss EAP 日志记录子系统 为部署添加隐式日志记录 API 依赖项。您可以使用 add-logging-api-dependencies 属性来管理这些隐式依赖项是否添加到部署中,该属性默认设置为 true。
要防止这些依赖项被添加,请使用管理 CLI 将 add-logging-api-dependencies 属性设置为 false :
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)