主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

获取 Kafka 事件流日志文件

当使用 KafkaStream 对象处理 Kafka® 流事件时,使用日志文件来帮助调试事件流处理问题。这些文件包含与从 Kafka 流读取和写入事件相关的所有警告、错误和其他信息。您可以从这些来源生成日志文件:

  • 连接到 Kafka 主题的 KafkaStream 对象 - 每个对象生成一个日志文件,其中包含有关从 Kafka 服务器读取的信息。

  • librdkafka Kafka C/C++ 客户端库 - 该库生成一个日志文件,其中包含有关来自 Kafka 服务器的写入的信息。

对于这两个源,您可以配置日志级别,以控制写入日志文件的输出量。您可以设置这些日志级别,按从最不详细到最详尽的顺序列出:

  1. off - 未启用日志记录(librdkafka 库的默认设置)

  2. fatal - 仅记录强制关闭 Kafka 连接的错误

  3. error - 记录所有错误(kafkaStream 对象的默认设置)

  4. warn - 记录所有错误和警告

  5. info - 记录有关主要流处理活动的错误、警告和高级信息

  6. debug - 除了先前描述的选项中的信息外,还记录调试信息

  7. trace - 除了先前描述的选项中的信息外,还记录堆栈跟踪信息

您还可以在部署的应用程序中配置日志级别。

配置 kafkaStream 对象日志记录

每个 KafkaStream 对象的日志文件都会生成到当前文件夹中的此文件中。

log\topic_name.log

topic_nameKafkaStream 对象连接到的 Kafka 主题的名称。如果 log 文件夹不存在,则 KafkaStream 对象会创建它。

默认情况下,这些对象的日志级别设置为 error。要更改日志级别,请更新 Streaming Data Framework for MATLAB® Production Server™ 安装中包含的 log4j.properties.template 文件。通过在 MATLAB 命令提示符下输入此命令来打开该文件。

open(fullfile(matlabshared.supportpkg.getSupportPackageRoot,'toolbox','mps','streaming', ...
                 '+matlab','+io','+stream','+event','+kafka','collector','log4j.properties.template'))

要更改 log4j.properties.template 文件中的日志级别,您必须更新所有指定日志级别的位置中的日志级别。例如,要将日志级别从 error 更改为 debug,请在 log4j.properties.template 文件中搜索包含此代码的行。

.level = error

在每一行中,将此代码更新为以下内容:

.level = debug

或者,要快速查看从 Kafka 主题收到的最后一个错误的信息,请使用 loggederror 函数。将您的 KafkaStream 对象作为输入参量传递给此函数。

为了生成日志,流处理数据框架使用 Log4j Java® 库的 2 版。有关此库的更多详细信息,请参阅 https://logging.apache.org/log4j/2.x/

配置 librdkafka 库日志

当启用 librdkafka 库的日志记录时,该库会在当前文件夹中生成一个名为 mw_rdkafka.log 的文件。如果日志文件不存在,KafkaStream 对象将创建它。

默认情况下,librdkafka 库的日志级别设置为 off。要启用日志记录,请使用此 MATLAB 命令:

matlab.io.stream.event.kafka.internal.admin(log=logLevel);

logLevel 是一个字符串或字符向量,表示前面描述的日志级别,例如 "error""warn""debug"。例如,将 logLevel 设置为 "debug" 可启用日志记录并将日志级别设置为调试模式。

在已部署的应用程序中配置日志记录

当您使用由 packagestreamingDataCompiler 函数创建的工程文件打包已部署的应用程序时,打包过程会将配置文件复制到应用程序的 for_redistribution 文件夹中。当您启动 Kafka 连接器将流处理数据从 Kafka 主题推送到由 MATLAB Production Server 托管的应用程序时,您将使用这些文件。要在 Kafka 连接器中启用日志记录,请将 log4j.properties.template 文件复制到名为 log4j.properties 的新文件中。然后,编辑这个新文件来选择日志级别并设置日志文件的名称。

要设置日志级别,请将 *.level 属性设置为所需的日志级别,如 配置 kafkaStream 对象日志记录 部分所述。要设置日志文件的名称,请将文本 !ArchiveName! 更改为所需日志文件的名称。!ArchiveName! 文本出现在以下行:

appender.rolling.fileName = ${basePath}!ArchiveName!.out
appender.rolling.filePattern = ${basePath}!ArchiveName!%i.out

例如,要将输出日志消息发送到文件 RecamanSum.out,请将这些行更改为:

appender.rolling.fileName = ${basePath}RecamanSum.out
appender.rolling.filePattern = ${basePath}RecamanSum%i.out

要控制 librdkafka 日志记录,请编辑位于以下路径的 rdkafkalog.properties 文件:

open(fullfile(matlabshared.supportpkg.getSupportPackageRoot,'toolbox','mps','streaming', ...
                 '+matlab','+io','+stream','+event','+kafka','collector','rdkafkalog.properties'))

该文件以只读权限安装,因此在编辑该文件之前必须使其可写。为了使您的更改生效,您必须在使用 packagestreamingDataCompiler 函数创建可部署存档之前编辑此文件。打包将 rdkafka.properties 文件合并到您的应用程序中。虽然打包后您无法更改此文件,但您可以使用环境变量来控制 MATLAB Production Server 加载 rdkafka.properties 文件的位置。

您可以通过设置 rdkafka.properties 中的值来更改日志级别和日志文件名。例如,要将日志级别从 fatal(默认)更改为 info,请将 level=fatal 行更改为 level=info

类似地,file 属性设置输出日志文件的完整路径。默认值为 mw_rdkafka.log,如下所示:

file=mw_rdkafka.log

如果没有文件夹规范,则该文件位于托管已部署的流处理应用程序的 MATLAB Production Server 实例的顶级文件夹中,该文件夹是 auto_deploy 文件夹的父文件夹。如果您将多个流处理应用程序部署到同一个 MATLAB Production Server 实例,请使此文件名特定于应用程序。例如:

file=recamanSum_rdkafka.log

如果保持文件名不变,则该文件将由该服务器托管的所有流处理应用程序共享。

要更改文件出现的文件夹,请使用适合平台的语法指定完整或相对路径。

Windows®Linux®Mac

file=c:\mps_logs\recamanSum_rdkafka.log

file=/myusername/mps_logs/recamanSum_rdkafka.log

要临时更改 MATLAB Production Server 加载 rdkafka.properties 文件的位置,请使用环境变量 MW_IOSTREAM_RDKAFKA_LOG_CONFIG。您必须在启动托管应用程序的 MATLAB Production Server 实例之前设置此环境变量。您还必须在启动该实例的环境中设置此变量。否则,MATLAB Production Server 无法找到环境变量。此环境变量设置会更改由 MATLAB Production Server 实例托管的所有应用程序的 rdkafka.properties 的位置。此环境变量仅用于临时故障排除。

为了临时使所有流处理应用程序根据未部署的 rdkafka.properties 文件中设置的文件和日志级别配置 rdkafka 日志记录,请将 MW_IOSTREAM_RDKAFKA_LOG_CONFIG 设置为未部署文件的完整路径。例如:

WindowsLinux 或 Mac
set MW_IOSTREAM_RDKAFKA_LOG_CONFIG=c:\mps_logs\recamanSum_rdkafka.log
setenv MW_IOSTREAM_RDKAFKA_LOG_CONFIG /myusername/mps_logs/recamanSum_rdkafka.log

MathWorks 技术支持提供日志文件

如需更多调试帮助,您可以将日志文件提供给 MathWorks® 技术支持。在提供日志文件之前,将日志级别设置为 trace

  1. 使用之前提供的信息找到日志文件。

  2. 将日志文件附加到 MathWorks 技术支持的新票或现有票上。请联系技术支持

另请参阅