Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置Apache Storm和Flink日志级别以显示调试消息_Java_Logging_Apache Flink_Apache Storm - Fatal编程技术网

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

Java 设置Apache Storm和Flink日志级别以显示调试消息,java,logging,apache-flink,apache-storm,Java,Logging,Apache Flink,Apache Storm,因此,我正在使用Storm和Flink应用程序构建一个JAR,在其中我将消息记录如下: import org.slf4j.Logger; 导入org.slf4j.LoggerFactory; // ... 私有静态最终记录器LOG=LoggerFactory.getLogger(Some.class); // ... LOG.debug(“…”); LOG.info(“…”); LOG.error(“…”); 然后我将JAR传递给../bin/storm和../bin/flink脚本,所有操作

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

import org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
// ...
私有静态最终记录器LOG=LoggerFactory.getLogger(Some.class);
// ...
LOG.debug(“…”);
LOG.info(“…”);
LOG.error(“…”);
然后我将JAR传递给
../bin/storm
../bin/flink
脚本,所有操作都正常,但是日志级别设置为
INFO
,我还想只显示来自我的包的
调试
消息

我尝试了几种方法,但我觉得我只是在尝试互联网上的随机方法,因为我找不到关于如何获取这些信息的权威参考,我很难理解Java日志工具令人难以置信的混乱状态

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


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

对于Storm,您的日志配置位于
Storm/log4j2/worker.xml
中。这是一个log4j2配置文件,因此您可以通过查看这里的log4j2文档来了解有哪些选项


我对弗林克不太熟悉,但我怀疑这是相似的。上面是Flink的页面,其中提到您的
conf
目录中应该有一个
logback.xml
文件。

为了修改日志级别以及在Flink集群上记录哪些类,请调整

  • FLINK_HOME/conf/log4j.properties
    如果您使用的是
    log4j
  • FLINK_HOME/conf/logback.xml
    如果您使用的是
    logback
在启动Flink群集之前

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

在这种情况下:

然后我将JAR传递给
../bin/storm
../bin/flink
脚本,所有操作都正常,但是日志级别设置为
INFO
,我还想只显示来自我的包的
调试
消息

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

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

import org.apache.logging.log4j.Level;
导入org.apache.logging.log4j.core.config.Configurator;
// ...
Configurator.setLevel(“my.package”,Level.ALL);
弗林克 在
/path/to/flink/conf/log4j.properties中添加一行就足够了:

log4j.logger.my.package=ALL

worker.xml
更改级别在暴风雨中不会产生任何效果,即使更改模式也不会产生任何效果。在Flink中,相关文件是
log4j.properties
。无论如何,我希望在我的JAR中放置一些东西,以避免接触系统文件。请将此答案作为上述内容的补充。如果更改worker.xml无效,您的集群可能在conf/storm.yaml中具有指向其他目录的非默认设置,或者您可能已经设置了我的答案中描述的拓扑属性。我的Storm目录基本上没有在tar.gz中被修改过。我怀疑更改
storm/log4j2/worker.xml
不适用于
bin/storm local some.jar…
。啊,没错。当您在本地模式下运行时,日志配置将只取决于您在jar中打包的log4j2.xml。Flink足以改变
log4j.properties
,但风暴对应物似乎没有效果。