2015-06-30 27 views
6

我试图通过运行example code来开始使用Apache风暴。我正在使用Maven仓库中的风暴0.10.1-beta1。在Apache Storm中禁用LocalCluster日志记录

不幸的是,当我运行这些时,控制台充满了信息级日志,淹没了我添加的任何System.out.print()调用。运行LocalCluster时是否可以更改日志级别?我试过列出的解决方案here,而且这些解决方案似乎都没有工作。

从链接中,将Config.TOPOLOGY_DEBUG属性更改为false不会删除信息级别日志,并且使用链接中的代码,我甚至不能使用logger.setLevel((Level) Level.FATAL),因为我得到“方法setLevel(Level)未定义对于Logger类型“,尽管它清楚地列在了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> 

仍然没有运气,虽然。是否有任何额外的配置需要告诉风暴使用自定义日志设置?

更新:事实证明,风暴0.10.x切换到使用log4j2而不是logback,所以添加log4j2.xml与上述配置终于工作!

+0

看在这里:https://stackoverflow.com/questions/30923617/how-to-implement-log-changes-in-a-storm-project-locally-using-eclipse/ –

+0

只是试过,没有运气(见编辑)。 – gears88

回答

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

所以事实证明,风暴0.10.x [切换到log4j2](https://storm.apache.org/2015/06/15/storm0100-beta-released.html)这就是为什么logback.xml文件wasn'不工作。但是,在./src中创建log4j2.xml确实有效。我用风暴0.9.1测试了你的配置 - 孵化,它的工作完美。谢谢您的帮助! – gears88

+1

提示以后参考:) –

+0

我试着在程序的src文件夹中保留一个带有上述内容的'log4j2.xml',但本地集群的INFO和DEBUG日志继续显示。对于像我这样的新手来说,能否请你提供更多关于文件保存位置的详细信息以及'Storm'如何识别'Netbeans'项目文件夹中的log4j2.xml文件?我使用'Gradle'来获得'Storm'罐子。 – Nav

1

要清楚的新手:
当本地集群上运行:无论您使用log4jslf4j为自己的应用程序的日志,你最终要使用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"/> 
+0

在'log4j2.xml'中,这个部分不应该是“任何地方”;它应该在''中。 – FaithReaper

1

要定义系统属性-Dlog4j.configurationFile=log4j2.xml是风暴1.0.0

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

+0

否.. Storm只搜索类路径下的'log4j2.xml'文件。如果它是一个maven项目,你可以把它放在'src/main/resources'下,因为我这样使用它。 Maven约定在类路径下直接包含'src/main/java'和'src/main/resources'。在Eclipse中,您可能需要配置classpath(删除'src'并添加这两个文件夹)。 – FaithReaper