Logging 在Apache Storm中禁用本地群集日志记录

Logging 在Apache Storm中禁用本地群集日志记录,logging,log4j,apache-storm,Logging,Log4j,Apache Storm,我正试图通过运行。我正在使用maven存储库中的storm 0.10.1-beta1 不幸的是,当我运行这些时,控制台中充斥着信息级日志,淹没了我添加的所有System.out.print()调用。在运行LocalCluster时是否可以更改日志级别?我尝试了列出的解决方案,但似乎没有一个有效 从链接中,将Config.TOPOLOGY\u DEBUG属性更改为false不会删除信息级别日志,使用链接中的代码,我甚至无法使用logger.setLevel((level)level.FATAL),

我正试图通过运行。我正在使用maven存储库中的storm 0.10.1-beta1

不幸的是,当我运行这些时,控制台中充斥着信息级日志,淹没了我添加的所有
System.out.print()
调用。在运行LocalCluster时是否可以更改日志级别?我尝试了列出的解决方案,但似乎没有一个有效

从链接中,将
Config.TOPOLOGY\u DEBUG
属性更改为false不会删除信息级别日志,使用链接中的代码,我甚至无法使用
logger.setLevel((level)level.FATAL)
,因为我得到了“类型记录器的方法setLevel(level)未定义”,尽管它在log4j api中明确列出

编辑1: 我还尝试了该解决方案,并使用以下配置将名为
logback.xml
的xml放入./src中:

<configuration monitorInterval="60">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
     <PatternLayout pattern="%-4r [%t] %-5p %c{1.} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="org.apache.zookeeper" level="WARN"/>
    <Root level="WARN">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</configuration>

但还是没有运气。是否需要任何其他配置来告诉storm使用自定义日志设置


更新:事实证明,storm 0.10.x改用log4j2而不是logback,因此使用上述配置添加log4j2.xml终于奏效了

以下配置适用于我:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="WARN">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n

为了让新手明白这一点:
在本地集群上运行时:无论您使用
log4j
还是
slf4j
来记录您自己的应用程序,最终都必须使用
log4j2.xml
logback.xml
文件来配置您希望记录的方式

它在这个文件中;您自己的应用程序的log4j或logback xml文件,您必须粘贴配置,该配置告诉您的应用程序不要显示日志

因此,只需将其添加到
标记之间的任意位置

 <logger name="org.apache.storm" level="OFF"/>
 <logger name="org.apache.zookeeper" level="OFF"/>

定义系统属性
-Dlog4j.configurationFile=log4j2.xml
是Storm 1.0.0上的一个关键点


log4j2.xml
可能是一个伪造的或不存在的文件。

看这里:只是尝试了这个方法,但没有成功(请参见编辑)。我尝试了你的方法,但不起作用,我将log4j2.xml放在src和src/main/resources/中仍然不起作用。因此,结果是风暴0.10.x,这就是logback.xml文件不起作用的原因。但是,在./src中创建log4j2.xml确实有效。我用storm 0.9.1-Cubating测试了您的配置,效果非常好。谢谢你的帮助!很高兴知道,以备将来参考:)我尝试在程序的src文件夹中保留一个包含上述内容的
log4j2.xml
,但是本地集群的
INFO
DEBUG
日志继续显示。对于像我这样的新手,你能提供更多关于文件应该保存在哪里以及
Storm
如何识别
log4j2.xml
文件在
Netbeans
项目文件夹中的存在的详细信息吗?我正在使用
Gradle
获取
Storm
jar。我不熟悉Netbeans。。。在Eclipse中,该文件位于
src/resources
中。但我相信,互联网搜索将揭示Netbeans的答案。不。。Storm只搜索classpath下的
log4j2.xml
文件。如果它是一个maven项目,您可以将它放在
src/main/resources
下,因为我这样使用它。Maven的惯例是直接在类路径下包含
src/main/java
src/main/resources
。在Eclipse中,您可能必须配置类路径(删除
src
并添加这两个文件夹);它应该在
中。