如何在 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
,它对应于 slf4j
和 slf4j-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 日志输出中涉及的所有组件正确设置级别。
当 运行 本地使用 Direct Runner 的 Apache Beam 管道时,日志级别似乎设置为 DEBUG
。
有没有办法将日志设置为 INFO
?
注意:--workerLogLevelOverrides
在使用Cloud Dataflow Runner时可以使用,但似乎不适用于Direct Runner
似乎按照标准配置,日志记录是使用 JUL
(java.util.logging
) 后端通过 slf4j
完成的。您可以检查 pom.xml 的 slf4j-api
,它对应于 slf4j
和 slf4j-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 日志输出中涉及的所有组件正确设置级别。