设置 Apache Storm 和 Flink 日志级别以显示调试消息

Set Apache Storm and Flink log level to display debug messages

所以我正在用 Storm 和 Flink 应用程序构建一个 JAR,我在其中记录如下消息:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

// ...

private static final Logger LOG = LoggerFactory.getLogger(Some.class);

// ...

LOG.debug("...");
LOG.info("...");
LOG.error("...");

然后我将 JAR 传递给 .../bin/storm.../bin/flink 脚本,一切正常,但日志级别设置为 INFO,我还想显示 DEBUG 消息 仅来自我的包裹

我尝试了几件事,但我觉得我只是在尝试从互联网上随机尝试的东西,因为我找不到关于如何获得它的权威参考,而且我很难理解令人难以置信的混乱Java...

的日志设施状态

我问的是 Storm 和 Flink,因为我怀疑我的问题的根源是一样的,但我可能错了。如果我没有提供一个最小的例子,我也很抱歉,但这里真的没有什么可以提供的。

如果您需要更多详细信息,请告诉我。

对于 Storm,您的日志配置在 storm/log4j2/worker.xml 中。它是一个 log4j2 配置文件,因此您可以在此处 https://logging.apache.org/log4j/2.x/manual/configuration.html.

查看 log4j2 文档以了解有哪些选项

我对 Flink 不太熟悉,但我怀疑它很相似。 Here 是 Fl​​ink 的页面,其中提到您应该在 conf 目录中有一个 logback.xml 文件。

为了在Flink集群上修改日志级别和类日志,请适配

  • FLINK_HOME/conf/log4j.properties 如果您使用 log4j
  • FLINK_HOME/conf/logback.xml 如果您使用 logback

在启动 Flink 集群之前。

部署Flink集群时会读取这些文件。请注意,这些设置无法在运行时更改,除非您将 Flink 的 log4j 记录器替换为支持动态加载设置的 log4j2

在这种情况下:

Then I pass the JAR to .../bin/storm and .../bin/flink scripts and everything works, but the log level is set to INFO, I'd like to also display DEBUG messages from my package only.

我最终得到了以下次优解决方案。

风暴

由于未知原因,更改 /path/to/storm/log4j2/worker.xml 文件无效,因此我需要以编程方式进行操作:

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;

// ...

Configurator.setLevel("my.package", Level.ALL);

弗林克

/path/to/flink/conf/log4j.properties加一行就够了:

log4j.logger.my.package=ALL