记录和跟踪
该产品具有统一日志记录组件,用于处理该产品写入的消息以及提供首次故障数据捕获 (FFDC) 服务。
此外,日志记录组件将捕获写入到 System.out、System.err、java.util.logging 和 OSGi 记录的消息。日志记录组件将统一处理这些消息以及该产品写入的其他消息。日志记录组件无法捕获直接由 JVM 进程写入的消息,例如 -verbose:gc 输出。
服务器有三个主要日志文件:
- console.log - 此文件包含来自 JVM 进程的重定向标准输出流和标准错误流。此控制台输出适用于直接人工使用。如果您使用缺省 consoleLogLevel 配置,那么日志记录组件将主要事件写入标准输出流,并将错误写入标准错误流。如果您使用缺省 copySystemStreams 配置,那么日志记录组件还将写入 System.out 流的所有消息复制到标准输出流,并将写入 System.err 流的所有消息复制到标准错误流。标准输出流和标准错误流始终包含直接由 JVM 进程写入的消息,例如,-verbose:gc 输出。仅当使用 server start 命令时才会创建此文件,并且要变更此文件的位置,只能使用 LOG_DIR 环境变量。有关更多信息,请参阅从命令行管理 Liberty。
- messages.log - 此文件包含由日志记录组件写入或捕获的所有消息。写入到此文件的所有消息包含其他信息,例如,消息时间戳记以及写入该消息的线程的标识。此文件不包含由 JVM 进程直接写入的消息。
- trace.log - 此文件包含由日志记录组件写入或捕获的所有消息以及任何其他跟踪。仅当您启用其他跟踪时,才会创建此文件。此文件不包含由 JVM 进程直接写入的消息。
日志记录配置
可以通过服务器配置来控制日志记录组件。日志记录配置的主要位置是位于 server.xml 文件中。有时,您可能需要配置跟踪以诊断在处理 server.xml 文件之前发生的问题。在这种情况下,可以在 bootstrap.properties 文件中指定等价的配置属性。如果在 bootstrap.properties 文件和 server.xml 文件中都指定配置属性,那么会使用 bootstrap.properties 文件中的值,直到处理了 server.xml 文件为止。然后,使用 server.xml 文件中的值。应避免同时在 bootstrap.properties 和 server.xml 文件中为相同配置属性指定不同值。
属性 | 等价属性 | 描述 |
---|---|---|
logDirectory |
|
可以使用此属性来设置所有日志文件(不包括
console.log 文件,但包括 FFDC)的目录。缺省情况下,logDirectory 设置为 LOG_DIR 环境变量。缺省
LOG_DIR 环境变量路径为 WLP_OUTPUT_DIR/serverName/logs。 避免故障: 使用 LOG_DIR
环境变量或 com.ibm.ws.logging.log.directory 属性而不是 logDirectory 属性来配置您要将所有消息写至其中的目录。否则,缺省情况下一开始会将一些消息写至 logs
目录,然后将余下消息写至基于您的配置的指定目录。服务器运行时,可使用 logDirectory
属性将日志动态更新至指定目录。
|
|
|
日期和时间使用语言环境格式或 ISO-8601 格式。您可以为属性的值或等效属性的值指定 true 或 false。缺省值为 false。 如果指定 true 值,那么会在 messages.log 文件、trace.log 文件和 FFDC 日志中使用 ISO-8601 格式。格式为:yyyy-MM-dd'T'HH:mm:ss.SSSZ。 如果指定值 false,那么会根据系统中设置的缺省语言环境设置日期和时间格式。如果未找到缺省语言环境,格式为 dd/MMM/yyyy HH:mm:ss:SSS z。 |
maxFileSize |
|
滚动之前日志文件可以达到的最大大小(以 MB 计)。Liberty 运行时仅执行基于大小的日志滚动。要禁用此属性,请将值设置为 0。最大文件大小是适当的。缺省情况下,值为 20。 注: maxFileSize
不适用于 console.log 文件。
|
maxFiles |
|
如果强制最大文件大小存在,那么此设置用于确定每个日志文件保留的字节数。此设置也适用于对任何特定日期发生的异常进行汇总的异常日志数。因此,如果此数目是 10,那么 ffdc/ 目录中可具有 10 个消息日志、10 个跟踪日志以及 10 项异常摘要。缺省情况下,值为 2。 注: maxFiles
不适用于 console.log 文件。
|
consoleLogLevel |
|
此过滤器控制进入控制台的消息的详细程度。有效值为 INFO、AUDIT、WARNING、ERROR 和 OFF。缺省情况下,consoleLogLevel 设置为 WLP_LOGGING_CONSOLE_LOGLEVEL 环境变量(如果已设置)或 AUDIT。 |
copySystemStreams |
|
如果为 true,那么会将写入 System.out 和 System.err 流的消息复制到 console.log。如果为 false,那么这些消息会写入到配置的日志,例如,messages.log 或 trace.log,但不复制到 console.log。缺省值为 true。 |
messageFileName |
|
消息日志的缺省名称为 messages.log。此文件总是存在,而且包含 INFO 和其他 (AUDIT、WARNING、ERROR 和 FAILURE)消息以及 System.out 和 System.err。此日志还包含时间戳记和发放线程标识。如果日志文件滚动,那么之前日志文件的名称的格式为 messages_timestamp.log |
suppressSensitiveTrace | 服务器跟踪可在跟踪非类型化数据(例如,通过网络连接接收到的字节数)时公开敏感数据。此属性如果设置为 true,那么可防止潜在的敏感信息暴露在日志和跟踪文件中。缺省值为 false。 | |
traceFileName |
|
只有在启用附加或详细跟踪的情况下,才创建 trace.log 文件。stdout 识别为特殊值,并促使将跟踪定向到原始标准输出流。 |
traceSpecification |
|
跟踪字符串用于选择性地启用跟踪。缺省值为 *=info。 |
traceFormat |
|
此属性控制跟踪日志的格式。Liberty 的缺省格式为 ENHANCED。您也可以使用 BASIC 和 ADVANCED 格式,如WebSphere Application Server 传统版中所示。 |
hideMessage |
|
可以使用此属性配置您要在 console.log 和 message.log 文件中隐藏的消息。如果消息配置为隐藏,那么它们会重定向至 trace.log 文件。 |
![]() |
![]()
|
![]() |
![]() |
![]()
|
![]() |
![]() |
![]()
|
![]() |
![]() |
![]()
|
![]() |
要在服务器配置文件中设置日志记录属性,可以在开发者工具的服务器配置视图中选择日志记录和跟踪,也可以在服务器配置文件中添加日志记录元素,如下所示:
<logging traceSpecification="*=audit:com.myco.mypackage.*=finest"/>
日志详细信息级别规范的格式:
<component> = <level>
其中,<component> 是要为其设置日志详细信息级别的组件,<level> 是有效记录器级别之一(off、fatal、severe、warning、audit、info、config、detail、fine、finer、finest 或 all)。用冒号 (:) 分隔多个日志详细信息级别规范。
注意: 对于给定记录器,此级别由适用于该记录器的最具体跟踪规范确定。
组件相当于 Java™ 包和类,或者相当于 Java 包的集合。使用星号 (*) 作为通配符以指示某些组件,这些组件具有所指定组件包含的所有包中所有的类。例如:
- *
- 指定在应用程序服务器中运行的所有可跟踪代码,包括产品系统代码和客户代码。
- com.ibm.ws.*
- 指定所有包名以 com.ibm.ws 开头的类。
- com.ibm.ws.classloader.JarClassLoader
- 仅指定 JarClassLoader 类。
V6 及更高版本日志记录级别 | 内容/重要性 |
---|---|
关闭 | 日志记录已关闭。 |
致命 | 任务无法继续,并且组件、应用程序和服务器无法工作。 |
严重 | 任务无法继续,但是组件、应用程序和服务器仍可工作。此级别也可以表明即将发生的不可恢复的错误。 |
警告 | 可能发生错误或即将发生错误。此级别也可以表明正在向故障发展(例如,潜在的资源泄漏)。 |
审计 | 影响服务器状态或资源的重大事件 |
信息 | 概述总体任务进度的一般信息 |
配置 | 配置更改或状态 |
详细信息 | 详细说明子任务进度的一般信息 |
精细 | 跟踪信息 - 常规跟踪 + 方法入口、出口和返回值 |
更精细 | 跟踪信息 - 详细跟踪 |
最精细 | 跟踪信息 - 更详细的跟踪信息,包含调试问题所需的所有详细信息 |
全部 | 记录所有事件。如果创建了定制级别,那么全部将包括那些级别,并且能提供比“最精细”更详细的跟踪。 |
console.log
文件的管理级别与其他日志文件不同。只能更改以下属性:consoleLogLevel、consoleSource 和 consoleFormat。如果您担心
console.log 文件的大小不断增长,那么可禁用 console.log 文件并改用消息日志文件。系统将以另一格式编写的相同数据写至消息日志文件,您可使用
maxFileSize 和 maxFiles 属性来控制消息日志文件的大小和数目。例如,以下
bootstrap.properties 文件会导致产生空的 console.log
文件,以及最多 3 个不断增大的 1 MB loggingMessages.log 文件。但是,来自底层 JVM 的消息仍可写入 console.log。由于 bootstrap.properties 文件中的设置在创建消息日志文件之前生效,因此消息日志文件最初创建为 loggingMessages.log 而不是缺省的
messages.log。
com.ibm.ws.logging.max.file.size=1
com.ibm.ws.logging.max.files=3
com.ibm.ws.logging.console.log.level=OFF
com.ibm.ws.logging.message.file.name=loggingMessages.log
console.log 文件会在服务器重新启动时重置。注: 在所有操作系统上,日志都以缺省系统编码编写。
在 z/OS® 系统上,console.log 文件使用缺省代码页,而所有其他日志文件使用 ISO8859-1 编码,并且标记为使用该编码的文本文件。 如果 z/OS UNIX 系统服务 (USS) 代码页自动转换功能部件处于活动状态,那么您可以使用标准编辑器和文本实用程序来查看使用 ISO8859-1 编码的日志文件。
在 Windows 系统上,有两种编码:OEM 代码页(用于控制台输出)和 ANSI 代码页(用于读写文件)。console.log 文件使用 OEM 代码页,而所有其他日志都使用 ANSI 代码页。
在所有其他操作系统上,所有日志文件都使用缺省编码。
![[18.0.0.1 and later]](../ng_v18001plus.gif)
- 要在 server.xml 文件中将 messages.log 设置为 JSON 格式:
<logging messageFormat="json" messageSource="message,trace,accessLog,ffdc" />
- 要在 server.env 文件中将控制台设置为 JSON 格式:
WLP_LOGGING_CONSOLE_FORMAT=json WLP_LOGGING_CONSOLE_LOGLEVEL=info WLP_LOGGING_CONSOLE_SOURCE=message,trace,accessLog,ffdc
- 要在 bootstrap.properties 文件中将控制台设置为 JSON 格式:
com.ibm.ws.logging.console.format=json com.ibm.ws.logging.console.log.level=info com.ibm.ws.logging.console.source=message,trace,accessLog,ffdc