diff --git a/src/psu/PSUEvent.cpp b/src/psu/PSUEvent.cpp
index 438faa2..353e1f1 100644
--- a/src/psu/PSUEvent.cpp
+++ b/src/psu/PSUEvent.cpp
@@ -31,7 +31,6 @@
 #include <array>
 #include <chrono>
 #include <cstddef>
-#include <iostream>
 #include <memory>
 #include <set>
 #include <stdexcept>
@@ -56,7 +55,7 @@
 
     if (!eventInterface->initialize())
     {
-        std::cerr << "error initializing event interface\n";
+        lg2::error("error initializing event interface");
     }
 
     std::shared_ptr<std::set<std::string>> combineEvent =
@@ -199,7 +198,7 @@
     }
     if (!buffer)
     {
-        std::cerr << "Buffer was invalid?";
+        lg2::error("Buffer was invalid?");
         return;
     }
 
@@ -248,7 +247,7 @@
     }
     if (!buffer)
     {
-        std::cerr << "Buffer was invalid?";
+        lg2::error("Buffer was invalid?");
         return;
     }
     // null terminate the string so we don't walk off the end
@@ -276,7 +275,7 @@
     {
         if (errCount == warnAfterErrorCount)
         {
-            std::cerr << "Failure to read event at " << path << "\n";
+            lg2::error("Failure to read event at '{PATH}'", "PATH", path);
         }
         updateValue(0);
         errCount++;
@@ -324,14 +323,14 @@
                 // Fan Failed has two args
                 if (deassertMessage == "OpenBMC.0.1.PowerSupplyFanRecovered")
                 {
-                    lg2::info("{EVENT} deassert", "EVENT", eventName,
+                    lg2::info("'{EVENT}' deassert", "EVENT", eventName,
                               "REDFISH_MESSAGE_ID", deassertMessage,
                               "REDFISH_MESSAGE_ARGS",
                               (psuName + ',' + fanName));
                 }
                 else
                 {
-                    lg2::info("{EVENT} deassert", "EVENT", eventName,
+                    lg2::info("'{EVENT}' deassert", "EVENT", eventName,
                               "REDFISH_MESSAGE_ID", deassertMessage,
                               "REDFISH_MESSAGE_ARGS", psuName);
                 }
@@ -345,7 +344,7 @@
     }
     else
     {
-        std::cerr << "PSUSubEvent asserted by " << path << "\n";
+        lg2::error("PSUSubEvent asserted by '{PATH}'", "PATH", path);
 
         if ((!*assertState) && ((*asserts).empty()))
         {
@@ -355,14 +354,14 @@
                 // Fan Failed has two args
                 if (assertMessage == "OpenBMC.0.1.PowerSupplyFanFailed")
                 {
-                    lg2::warning("{EVENT} assert", "EVENT", eventName,
+                    lg2::warning("'{EVENT}' assert", "EVENT", eventName,
                                  "REDFISH_MESSAGE_ID", assertMessage,
                                  "REDFISH_MESSAGE_ARGS",
                                  (psuName + ',' + fanName));
                 }
                 else
                 {
-                    lg2::warning("{EVENT} assert", "EVENT", eventName,
+                    lg2::warning("'{EVENT}' assert", "EVENT", eventName,
                                  "REDFISH_MESSAGE_ID", assertMessage,
                                  "REDFISH_MESSAGE_ARGS", psuName);
                 }
