我正试图通过运行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终于有效了!
答案 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.xml
或logback.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
可能是假的或不存在的文件。