diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c
index b742223..ad21e08 100644
--- a/pimd/pim_assert.c
+++ b/pimd/pim_assert.c
@@ -53,33 +53,35 @@
   int metric_changed = !pim_assert_metric_match(&ch->ifassert_winner_metric,
 						&winner_metric);
 
-  if (ch->ifassert_state != new_state) {
-    char src_str[100];
-    char grp_str[100];
-    pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
-    zlog_info("%s: (S,G)=(%s,%s) assert state changed from %s to %s on interface %s",
-	      __PRETTY_FUNCTION__,
-	      src_str, grp_str,
-	      pim_ifchannel_ifassert_name(ch->ifassert_state),
-	      pim_ifchannel_ifassert_name(new_state),
-	      ch->interface->name);
-  }
+  if (PIM_DEBUG_PIM_EVENTS) {
+    if (ch->ifassert_state != new_state) {
+      char src_str[100];
+      char grp_str[100];
+      pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
+      pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+      zlog_debug("%s: (S,G)=(%s,%s) assert state changed from %s to %s on interface %s",
+		__PRETTY_FUNCTION__,
+		src_str, grp_str,
+		pim_ifchannel_ifassert_name(ch->ifassert_state),
+		pim_ifchannel_ifassert_name(new_state),
+		ch->interface->name);
+    }
 
-  if (winner_changed) {
-    char src_str[100];
-    char grp_str[100];
-    char was_str[100];
-    char winner_str[100];
-    pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
-    pim_inet4_dump("<was?>", ch->ifassert_winner, was_str, sizeof(was_str));
-    pim_inet4_dump("<winner?>", winner, winner_str, sizeof(winner_str));
-    zlog_info("%s: (S,G)=(%s,%s) assert winner changed from %s to %s on interface %s",
-	      __PRETTY_FUNCTION__,
-	      src_str, grp_str,
-	      was_str, winner_str, ch->interface->name);
-  }
+    if (winner_changed) {
+      char src_str[100];
+      char grp_str[100];
+      char was_str[100];
+      char winner_str[100];
+      pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
+      pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+      pim_inet4_dump("<was?>", ch->ifassert_winner, was_str, sizeof(was_str));
+      pim_inet4_dump("<winner?>", winner, winner_str, sizeof(winner_str));
+      zlog_debug("%s: (S,G)=(%s,%s) assert winner changed from %s to %s on interface %s",
+		__PRETTY_FUNCTION__,
+		src_str, grp_str,
+		was_str, winner_str, ch->interface->name);
+    }
+  } /* PIM_DEBUG_PIM_EVENTS */
 
   ch->ifassert_state         = new_state;
   ch->ifassert_winner        = winner;
@@ -655,7 +657,7 @@
     char grp_str[100];
     pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
     pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
-    zlog_warn("%s: (S,G)=(%s,%s) multicast no enabled on interface %s",
+    zlog_warn("%s: (S,G)=(%s,%s) multicast not enabled on interface %s",
 	      __PRETTY_FUNCTION__,
 	      src_str, grp_str, ifp->name);
     return -1; /* must return since pim_ifp is used below */
