diff --git a/oem/ampere/event/oem_event_manager.cpp b/oem/ampere/event/oem_event_manager.cpp
index 479c789..efdd34a 100644
--- a/oem/ampere/event/oem_event_manager.cpp
+++ b/oem/ampere/event/oem_event_manager.cpp
@@ -437,7 +437,6 @@
         default:
             std::string description;
             std::stringstream strStream;
-            log_level logLevel = log_level::OK;
 
             description += "SENSOR_EVENT : NUMERIC_SENSOR_STATE: ";
             description += prefixMsgStrCreation(tid, sensorId);
@@ -450,9 +449,7 @@
                       << " presentReading 0x" << std::setw(8)
                       << static_cast<uint32_t>(presentReading) << std::dec;
             description += strStream.str();
-
-            sendJournalRedfish(description, logLevel);
-            break;
+            std::cout << description << "\n";
     }
     return PLDM_SUCCESS;
 }
@@ -477,10 +474,11 @@
     }
 
     std::string description;
-    log_level logLevel = log_level::OK;
 
     if (stateSensorToMsgMap.contains(sensorId))
     {
+        log_level logLevel = log_level::OK;
+
         description += prefixMsgStrCreation(tid, sensorId);
         auto componentMap = stateSensorToMsgMap[sensorId];
         if (sensorOffset < componentMap.size())
@@ -513,6 +511,8 @@
             description += "sends unsupported component sensor offset " +
                            std::to_string(sensorOffset);
         }
+
+        sendJournalRedfish(description, logLevel);
     }
     else
     {
@@ -526,10 +526,9 @@
                   << " previousEventState 0x" << std::setw(2)
                   << static_cast<uint32_t>(previousEventState) << std::dec;
         description += strStream.str();
+        std::cout << description << "\n";
     }
 
-    sendJournalRedfish(description, logLevel);
-
     return PLDM_SUCCESS;
 }
 
@@ -552,7 +551,6 @@
 
     std::string description;
     std::stringstream strStream;
-    log_level logLevel = log_level::OK;
 
     description += "SENSOR_EVENT : SENSOR_OP_STATE: ";
     description += prefixMsgStrCreation(tid, sensorId);
@@ -561,8 +559,7 @@
               << "previous_op_state 0x" << std::setw(2)
               << static_cast<uint32_t>(previous_op_state) << std::dec;
     description += strStream.str();
-
-    sendJournalRedfish(description, logLevel);
+    std::cout << description << "\n";
 
     return PLDM_SUCCESS;
 }
@@ -615,7 +612,6 @@
         default:
             std::string description;
             std::stringstream strStream;
-            log_level logLevel = log_level::OK;
 
             description += "SENSOR_EVENT : Unsupported Sensor Class " +
                            std::to_string(sensorEventClassType) + ": ";
@@ -632,11 +628,9 @@
             }
 
             description += strStream.str();
-
-            sendJournalRedfish(description, logLevel);
+            std::cout << description << "\n";
     }
-    lg2::info("Unsupported class type {CLASSTYPE}", "CLASSTYPE",
-              sensorEventClassType);
+
     return PLDM_ERROR;
 }
 
