diff --git a/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java b/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java index 7ef6e31c400..93f15b6d0bf 100644 --- a/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java +++ b/tools/src/main/java/org/apache/rocketmq/tools/monitor/DefaultMonitorListener.java @@ -17,12 +17,13 @@ package org.apache.rocketmq.tools.monitor; +import org.apache.rocketmq.logging.org.slf4j.Logger; +import org.apache.rocketmq.logging.org.slf4j.LoggerFactory; +import org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo; + import java.util.Iterator; import java.util.Map.Entry; import java.util.TreeMap; -import org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo; -import org.apache.rocketmq.logging.org.slf4j.Logger; -import org.apache.rocketmq.logging.org.slf4j.LoggerFactory; public class DefaultMonitorListener implements MonitorListener { private final static String LOG_PREFIX = "[MONITOR] "; @@ -34,33 +35,43 @@ public DefaultMonitorListener() { @Override public void beginRound() { - logger.info(LOG_PREFIX + "=========================================beginRound"); + logger.info("{}=========================================beginRound", LOG_PREFIX); } @Override public void reportUndoneMsgs(UndoneMsgs undoneMsgs) { - logger.info(String.format(LOG_PREFIX + "reportUndoneMsgs: %s", undoneMsgs)); + logger.info("{}reportUndoneMsgs: {}", LOG_PREFIX, undoneMsgs); } @Override public void reportFailedMsgs(FailedMsgs failedMsgs) { - logger.info(String.format(LOG_PREFIX + "reportFailedMsgs: %s", failedMsgs)); + logger.info("{}reportFailedMsgs: {}", LOG_PREFIX, failedMsgs); } @Override public void reportDeleteMsgsEvent(DeleteMsgsEvent deleteMsgsEvent) { - logger.info(String.format(LOG_PREFIX + "reportDeleteMsgsEvent: %s", deleteMsgsEvent)); + logger.info("{}reportDeleteMsgsEvent: {}", LOG_PREFIX, deleteMsgsEvent); } @Override public void reportConsumerRunningInfo(TreeMap criTable) { + if (criTable == null || criTable.isEmpty()) { + logger.warn("{}ConsumerRunningInfo is empty.", LOG_NOTIFY); + return; + } + + ConsumerRunningInfo firstValue = criTable.firstEntry().getValue(); + if (firstValue == null || firstValue.getProperties() == null) { + logger.warn("{}ConsumerRunningInfo entry is empty.", LOG_NOTIFY); + return; + } + + String consumerGroup = firstValue.getProperties().getProperty("consumerGroup"); { boolean result = ConsumerRunningInfo.analyzeSubscription(criTable); if (!result) { - logger.info(String.format(LOG_NOTIFY - + "reportConsumerRunningInfo: ConsumerGroup: %s, Subscription different", criTable - .firstEntry().getValue().getProperties().getProperty("consumerGroup"))); + logger.info("{}reportConsumerRunningInfo: ConsumerGroup: {}, Subscription different", LOG_NOTIFY, consumerGroup); } } @@ -70,11 +81,11 @@ public void reportConsumerRunningInfo(TreeMap criTa Entry next = it.next(); String result = ConsumerRunningInfo.analyzeProcessQueue(next.getKey(), next.getValue()); if (!result.isEmpty()) { - logger.info(String.format(LOG_NOTIFY - + "reportConsumerRunningInfo: ConsumerGroup: %s, ClientId: %s, %s", - criTable.firstEntry().getValue().getProperties().getProperty("consumerGroup"), - next.getKey(), - result)); + logger.info("{}reportConsumerRunningInfo: ConsumerGroup: {}, ClientId: {}, {}", + LOG_NOTIFY, + consumerGroup, + next.getKey(), + result); } } } @@ -82,6 +93,6 @@ public void reportConsumerRunningInfo(TreeMap criTa @Override public void endRound() { - logger.info(LOG_PREFIX + "=========================================endRound"); + logger.info("{}=========================================endRound", LOG_PREFIX); } }