如何在 Direct Runner 上为 Apache Beam 管道 运行 设置日志级别

How to set log level for apache beam pipeline running on Direct Runner

当 运行 本地使用 Direct Runner 的 Apache Beam 管道时,日志级别似乎设置为 DEBUG

有没有办法将日志设置为 INFO

注意:--workerLogLevelOverrides在使用Cloud Dataflow Runner时可以使用,但似乎不适用于Direct Runner

似乎按照标准配置,日志记录是使用 JUL(java.util.logging) 后端通过 slf4j 完成的。您可以检查 pom.xml 的 slf4j-api,它对应于 slf4jslf4j-jdk14 的后端。

您需要在 运行 时配置 JUL。一种方法是将类似

的内容作为参数传递给 VM

-Djava.util.logging.config.file=logging.properties

然后在 运行 应用程序所在的目录中创建一个 logging.properties。在我的例子中,它是应用程序的根目录(包含 src 目录的目录)。如果它似乎不起作用,您可以指定一个绝对路径作为文件名。

关于配置,这里有一个例子:

handlers=java.util.logging.ConsoleHandler
.level=INFO
java.util.logging.ConsoleHandler.level=ALL
org.apache.beam.sdk.io.gcp.pubsub.PubsubUnboundedSource.level=ALL

这设置了程序包 org.apache.beam.sdk.io.gcp.pubsub.PubsubUnboundedSource 的级别。根据情况,您可以使用它的配置。确保为 JUL 日志输出中涉及的所有组件正确设置级别。