Как отключить/отключить функцию ведения журнала от Storm

Я хочу отключить функцию ведения журнала, предлагаемую по умолчанию при запуске из локального кластера. В настоящее время он записывает столько информации на консоль.

Ниже приведен пример журнала:

261 [main] INFO  backtype.storm.daemon.task  - Shut down task Getting-Started-Toplogie-1-1376388324:2
2261 [main] INFO  backtype.storm.daemon.task  - Shutting down task Getting-Started-Toplogie-1-1376388324:1
2262 [Thread-24] INFO  backtype.storm.util  - Async loop interrupted!
2276 [main] INFO  backtype.storm.daemon.task  - Shut down task Getting-Started-Toplogie-1-1376388324:1
2278 [main] INFO  backtype.storm.daemon.worker  - Terminating zmq context
2279 [main] INFO  backtype.storm.daemon.worker  - Disconnecting from storm cluster state context
2279 [main] INFO  backtype.storm.daemon.worker  - Waiting for heartbeat thread to die
2279 [Thread-27] INFO  backtype.storm.util  - Async loop interrupted!
2308 [main] INFO  backtype.storm.testing  - Shutting down in process zookeeper
2309 [main] INFO  backtype.storm.testing  - Done shutting down in process zookeeper
2309 [main] INFO  backtype.storm.testing  - Deleting temporary path /tmp/255fe7c8-1407-4f43-8771-2217905232ab

После прохождения многих документов я получил код ниже, я могу отключить ведение журнала из класса.

static Logger logger = Logger.getLogger(TopologyMain.class);

public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException {        
      logger.setLevel((Level) Level.FATAL);
      logger.debug("Here is some DEBUG");
      logger.info("Here is some INFO");
      logger.warn("Here is some WARN");
      logger.error("Here is some ERROR");
      logger.fatal("Here is some FATAL");
 }
}

Выход (правильный): 0 [main] FATAL TopologyMain - Here is some FATAL

Но мне нужно изменить конфигурацию ведения журнала storm/zookeper и т.д.

Может ли кто-нибудь помочь в этом?

<ч/" > Обновить. Ниже приведен код, который я пробовал, но он не работает. Я пробовал с версией 0.7.1, 0.8.2 и 0.9.0-wip *

        //Configuration
        Config conf = new Config();
        conf.put(Config.TOPOLOGY_DEBUG, false);  //Tried this alone
        conf.setDebug(false);  //Tried this alone & tried both together as well.. No change :-(

Ответы

Ответ 1

Шторм действительно болтливый и сообщает много информации, но если вы хотите его отключить, вы можете установить Config.TOPOLOGY_DEBUG значение false.

Когда вы устанавливаете Config.TOPOLOGY_DEBUG в true, вы сообщаете Storm регистрировать сообщение каждый раз, когда кортеж испускается из любого носика или болта.

Ответ 2

Добавьте код ниже в log4j.xml. Он просто напечатает ваши запланированные журналы и выходы консоли: -

<logger name="org.apache.zookeeper">
        <level value="warn"/>
    </logger>

    <logger name="backtype.storm">
        <level value="warn"/>
    </logger>

    <logger name="com.netflix">
        <level value="warn"/>
    </logger>

И используйте в своих классах Logger.getLogger(Class).

Ответ 3

Это работает для меня (штормовая версия 0.9.0.1):

TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(..);
builder.setBolt(..);
:

Config conf = new Config();
conf.put(Config.TOPOLOGY_DEBUG, false);

LocalCluster cluster = new LocalCluster();
cluster.submitTopology("topologyName", conf, builder.createTopology());

Ответ 4

Я нашел этот вопрос при попытке оценить Storm с использованием локальной тестовой среды. Я создал проект в зависимости от storm-core version 1.1.0, который является последним стабильным выпуском на момент написания этой статьи, поэтому я не знаю, применимо ли это для кого-либо еще.

Проверяя зависимости Maven и расширяя содержимое storm-core-1.1.0.jar, выяснилось, что файл конфигурации для логической зависимости log4j библиотеки был вызван log4j2.xml. С осознанием того, что механизм регистрации был log4j 2, я обратился к документации здесь: https://logging.apache.org/log4j/2.x/manual/index.html Я создал новый log4j2.xml файл в разделе src/main/resources (мой проект сконфигурирован Maven, поэтому он находится в корневом каталоге классов). Я начал с копирования содержимого существующего файла и изменения уровней журнала для указанных регистраторов на "ВЫКЛ":

<?xml version="1.0" encoding="UTF-8"?>
    <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="OFF"/>
         <Root level="OFF">
           <AppenderRef ref="Console"/>
         </Root>
    </Loggers>
</configuration>

Запуск примера "hello world", независимо от установки conf.debug(), указывает на то, что - поскольку теперь нет механизма, с помощью которого ведение журнала должно быть возможно вообще - журналы (наиболее полезно System.out) теперь мертвы, за исключением приглашений System.out.println(), которые я помещал в свои тестовые носики/болты. Это именно то, что я хотел! Надеюсь, это поможет кому-то, кроме меня!

Ответ 5

Существует хорошая документация по динамическому настройке уровня журнала. Это можно сделать через пользовательский интерфейс, а также с помощью CLI. Позднее мне кажется лучше. После запуска топологии вы можете просто использовать следующую команду (изнутри установочного каталога Storm):

    ./bin/storm set_log_level [topology name] -l [logger name]=[LEVEL]:[TIMEOUT]

Подробнее см. эта ссылка

Ответ 6

Создайте файл "log4j2.xml" в src/main/resources (проект Maven) работает для меня!

<Loggers>
    <Logger name="org.apache.storm" level="OFF"/>
    <Logger name="org.apache.zookeeper" level="OFF"/>
    <Root level="OFF">
        <AppenderRef ref="Console"/>
    </Root>
</Loggers>