禁用Apache Storm中的LocalCluster日志记录

时间:2015-06-30 17:41:53

标签: logging log4j apache-storm

我正试图通过运行example code来开始Apache风暴。我正在使用maven存储库中的风暴0.10.1-beta1。

不幸的是,当我运行这些时,控制台充斥着信息级日志,淹没了我添加的任何System.out.print()个电话。在运行LocalCluster时是否可以更改日志级别?我已经尝试了列出的解决方案here,但似乎没有任何解决方案能够正常运行。

在链接中,将Config.TOPOLOGY_DEBUG属性更改为false不会删除信息级别日志,并且使用链接中的代码,我甚至无法使用logger.setLevel((Level) Level.FATAL),因为我得到了“对于Logger类型,方法setLevel(Level)是未定义的“尽管它明显列在log4j api中。

修改1 : 我还尝试了解决方案here,并使用以下配置将名为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使用自定义日志设置?

更新:事实证明风暴0.10.x切换到使用log4j2而不是logback,所以添加一个带有上述配置的log4j2.xml终于有效了!

3 个答案:

答案 0 :(得分:1)

以下配置适用于我:

<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>

答案 1 :(得分:1)

为新手说清楚:
在本地群集上运行时:无论您使用log4j还是slf4j进行自己的应用程序日志记录,最终都必须使用log4j2.xmllogback.xml文件where you set您希望日志记录发生的配置。

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

只需在<configuration></configuration>标记之间添加此内容即可。

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

答案 2 :(得分:1)

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

log4j2.xml可能是假的或不存在的文件。

相关问题