如何配置安静以显示调试日志

时间:2015-06-08 03:33:12

标签: scala apache-storm druid

我想使用tranquility 及其Storm Bolt将数据发送到druid。所以我编写了一个风暴拓扑(依赖于宁静)并将其编译为jar文件,然后使用run storm在本地模式下使用该jar文件。然而我遇到了一些问题:暴风雨表明并没有错,德鲁伊的霸主节点没有任何记录。我觉得霸主没有收到暴风雨发送的数据。

我想找出问题所在。我确实启用了风暴配置的调试

conf.setDebug(true);

但它只显示了每个spoutbolt的详细信息,但未显示tranquility的调试日志信息。我尝试将风暴logback/cluster.xml改为

<root level="DEBUG">
  <appender-ref ref="A1"/>
</root>

但它似乎不起作用。我尝试在项目的顶级目录中添加log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
    xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" 
          value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="console" />
    </root>

</log4j:configuration>

它也不起作用。

我在宁静的源代码中挖掘,看到宁静取决于依赖于log4j的ladylog库,所以我认为在项目中添加log4j.xml将启用调试模式并且可以看到调试输出this BeamBot

我完全感到困惑,因为现在我写了一个使用安静库的jar,它使用loglady库,使用log4j和我使用logback的风暴运行的jar。有人能给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

  

然后在本地模式下使用该jar文件运行storm

由于您以本地模式运行jar文件,因此修改logback/cluster.xml没有意义。通常,除非您在拓扑中手动更改配置,否则Storm将在本地模式下从特定依赖项(如storm-core-0.9.4.jar)读取默认配置。您应该在群集模式下运行拓扑以尝试。

另一方面,由于log4j存在许多冲突问题,我们使用slf4j作为log4j的默认库,就像这样

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyBolt {
    private static final Logger LOG = LoggerFactory
            .getLogger(MyBolt.class);
}

并排除所有其他log4j库中的所有依赖项,例如

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.8.2.1</version>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

希望这有帮助。