11.3. 关于 Logging 子系统
JBoss EAP logging
子系统使用 日志类别和日志 处理程序 系统进行配置。日志类别定义要捕获的消息。日志处理程序定义如何处理这些消息,例如写入磁盘或发送到控制台。
日志记录配置集 允许创建唯一的日志配置集合,并将其分配给独立于任何其他日志配置的应用程序。记录配置文件的配置与主要的 logging
子系统几乎相同。
11.3.1. 根日志记录器 复制链接链接已复制到粘贴板!
JBoss EAP root 日志记录器捕获指定日志级别或更高级别的所有日志消息,发送到未被日志类别捕获的服务器。
默认情况下,根日志记录器配置为使用控制台和定期日志处理程序。定期日志处理程序配置为写入 server.log
文件。此文件通常称为服务器日志。
如需更多信息 ,请参阅配置 Root 日志 器。
11.3.2. 日志类别 复制链接链接已复制到粘贴板!
日志类别定义要捕获的一组日志消息,以及一个或多个处理消息的日志处理程序。
要捕获的日志消息由指定的 Java 原始软件包和日志级别定义。来自该软件包及日志级别或更高级别的类的消息将被日志类别捕获并发送到指定的日志处理程序。
虽然日志类别通常是 Java 软件包和类名称,但可以是 Logger.getLogger(LOGGER_NAME)
方法指定的任何名称。
日志类别可以选择使用根日志记录器的日志处理程序,而不使用自己的处理程序。
如需更多信息 ,请参阅配置日志类别。
11.3.3. 日志处理程序 复制链接链接已复制到粘贴板!
日志处理程序定义如何记录捕获的日志消息。可用的日志处理程序类型有 console、file、periodic、size、periodic size、syslog、custom 和 async。
日志处理程序必须添加到至少一个日志记录器才能处于活动状态。
日志处理程序类型
- 控制台(Console)
-
控制台日志处理程序将日志消息写入主机操作系统的标准输出、stdout
或标准
错误、stderr
、流。在通过命令行提示符运行 JBoss EAP 时,将显示这些消息。除非操作系统配置为捕获标准输出或标准错误流,否则不会保存来自控制台日志处理程序的消息。 - File
- 文件日志处理程序将日志消息写入到指定的文件中。
- periodic
- 定期日志处理程序将日志消息写入到指定的文件,直到指定的时间段已过。过了时间段后,通过附加指定的时间戳来重命名文件,处理程序将继续写入到具有原始名称的新创建的日志文件中。
- Size
- 大小日志处理程序将日志消息写入到指定的文件,直到文件达到指定的大小。当文件达到指定的大小时,将使用数字后缀对其进行重命名,处理程序将继续写入到具有原始名称的新创建的日志文件中。每个大小日志处理程序都必须以这种方式指定要保留的最大文件数。
- 定期大小
定期大小日志处理程序将日志消息写入到指定文件,直到文件达到指定的大小 或指定 的时间段已过。然后,文件重命名为,处理程序继续写入到具有原始名称的新创建的日志文件。
这是定期日志处理程序和大小日志处理程序的组合,并支持它们的组合属性。
- Syslog
- 系统日志处理程序可用于发送消息到远程记录服务器。这使得多个应用可以发送其日志消息到同一服务器,它们都可以在上面一起解析。
- socket
- 套接字日志处理程序可用于通过套接字发送日志消息到远程记录服务器。这可以是 TCP 或 UDP 套接字。
- Custom
-
通过自定义日志处理程序,您可以配置已实施的新类型的日志处理程序。自定义处理程序必须作为 Java 类实施,扩展
java.util.logging.Handler
并包含在模块中。您还可以使用 Log4J 附加程序作为自定义日志处理程序。 - Async
- 异步日志处理程序是一种打包程序日志处理程序,可为一个或多个其他日志处理程序提供异步行为。这可用于日志处理程序,它们可能具有较高的延迟或其他性能问题,例如将日志文件写入网络文件系统。
有关配置每个日志处理程序的详情,请参考 配置日志处理程序 部分。
11.3.4. 日志级别 复制链接链接已复制到粘贴板!
日志级别是一个枚举的值,指示日志消息的性质及严重性。作为开发人员,您可以使用所选日志记录框架的适当方法指定给定日志消息级别,以发送消息。
JBoss EAP 支持受支持的应用程序日志记录框架使用的所有日志级别。最常使用的从最低到最高日志级别为 TRACE
、DEBUG
、INFO
、WARN
、ERROR
和 FATAL
。
日志类别和处理程序使用日志级别来限制它们所负责的消息。每个日志级别都有一个已分配的数字值,表示它相对于其他日志级别的顺序。日志级别和处理程序分配有日志级别,它们仅处理该级别或更高级别的日志消息。例如,级别为WARN的日志处理程序将仅记录 levels WARN
、
ERROR
和 FATAL
的消息。
支持的日志级别
日志级别 | 值 | 描述 |
---|---|---|
ALL | Integer.MIN_VALUE | 提供所有日志消息. |
FINEST | 300 | - |
FINER | 400 | - |
TRACE | 400 |
|
DEBUG | 500 |
|
OK | 500 | - |
CONFIG | 700 | - |
INFO | 800 |
|
WARN | 900 |
|
WARNING | 900 | - |
ERROR | 1000 |
|
严重性 | 1000 | - |
FATAL | 1100 |
|
OFF | Integer.MAX_VALUE | 不显示任何日志消息。 |
ALL
是最低日志级别,包含所有日志级别的消息。这可提供最多的日志量。
FATAL
是最高级别,仅包含该级别的消息。这可提供最小的日志量。
11.3.5. 日志格式 复制链接链接已复制到粘贴板!
格式器用于格式化日志消息。可以使用 named-formatter
属性将格式化器分配到日志记录处理程序。如需有关日志记录处理程序配置的更多信息,请参阅 配置日志处理程序。
logging 子系统包括四种格式:
Pattern Formatter
模式格式器用于以纯文本格式记录日志消息。除了将 formatter 用作日志处理程序 的 named-formatter
属性外,它还可用作 formatter
属性,而无需先创建 formatter 资源。有关模式语法的更多信息 ,请参阅 Pattern Formatter 的格式字符。
有关如何 配置模式格式化器 的详情,请参阅配置模式格式器。
JSON Formatter
JSON 格式器用于在 JSON 中格式化日志消息。
如需有关如何 配置 JSON 格式器的信息,请参阅配置 JSON 日志 格式器。
XML Formatter
XML 日志格式器用于在 XML 中格式化日志消息。
有关如何 配置 XML 日志格式器 的详情,请参阅配置 XML 日志格式器。
自定义格式
用于处理程序的自定义格式器。请注意,大多数日志记录都采用 printf 格式格式化。格式器可能需要调用 org.jboss.logmanager.ExtLogRecord#getFormattedMessage()
才能正确格式化消息。
有关如何 配置自定义日志格式器 的详情,请参阅配置自定义日志格式器。
11.3.6. filter Expressions 复制链接链接已复制到粘贴板!
使用 filter-spec
属性配置的过滤器表达式用于根据各种条件记录日志消息。过滤器检查始终在原始未格式化的消息上完成。您可以为日志记录器或处理程序包含过滤器,但日志记录器过滤器优先于处理程序上放置的过滤器。
为根日志记录器指定的 filter-spec
不会被其他日志记录器继承。相反,每个处理程序都必须指定 filter-spec
。
filter Expression | 描述 |
---|---|
accept | 接受所有日志消息。 |
deny | 拒绝所有日志消息。 |
不 [filter 表达式] | 返回单个过滤器表达式倒置的值。例如:
|
all[filter 表达式] | 从以逗号分隔的过滤器表达式列表中返回串联值。例如:
|
任意[filter 表达式] | 从以逗号分隔的过滤器表达式列表中返回一个值。例如:
|
levelChange[level] | 使用指定的级别更新日志记录。例如:
|
级别[级别] | 使用逗号分隔级别列表中列出的级别过滤日志消息。例如:
|
levelRange[minLevel,maxLevel] |
过滤指定级别的日志消息。
|
match["pattern"] | 使用提供的正则表达式过滤日志消息。例如:
|
substitute["pattern","replacement value"] | 使用替换文本(第二个参数)替换第一个匹配模式的过滤器(第一个参数)。例如:
|
substituteAll["pattern","replacement value"] | 将模式的所有匹配项(第一个参数)替换为替换文本(第二个参数)的过滤器。例如:
|
在使用管理 CLI 配置过滤器表达式时,请确保在过滤器文本中转义逗号和引号,以便该值作为字符串正确处理。您必须在逗号和引号前加上反斜杠(\)
,并将整个表达式括在引号中。以下是正确转义 replace 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\")")
11.3.7. 隐式日志记录依赖项 复制链接链接已复制到粘贴板!
默认情况下,JBoss EAP 日志记录
子系统为部署添加隐式日志记录 API 依赖项。您可以使用 add-logging-api-dependencies
属性(默认为 true
)来控制这些隐式依赖项是否添加到部署中。
使用管理 CLI,您可以将 add-logging-api-dependencies
属性 设置为 false
,从而不会将隐式日志记录 API 依赖项添加到部署中。
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)
有关 logging
子系统隐式依赖项的信息,请参阅 JBoss EAP 开发指南 中的 Implicit Module 依赖项 部分。