diff --git a/dbus-sdr/meson.build b/dbus-sdr/meson.build
index a937485..31f7d2c 100644
--- a/dbus-sdr/meson.build
+++ b/dbus-sdr/meson.build
@@ -2,6 +2,7 @@
     'sensorutils',
     'sensorutils.cpp',
     include_directories: root_inc,
+    dependencies: phosphor_logging_dep,
     implicit_include_directories: false,
 )
 
diff --git a/dbus-sdr/sensorcommands.cpp b/dbus-sdr/sensorcommands.cpp
index 9f33dcd..90e2ebf 100644
--- a/dbus-sdr/sensorcommands.cpp
+++ b/dbus-sdr/sensorcommands.cpp
@@ -38,7 +38,6 @@
 #include <cmath>
 #include <cstring>
 #include <format>
-#include <iostream>
 #include <map>
 #include <optional>
 #include <stdexcept>
@@ -592,8 +591,9 @@
     }
     if constexpr (debug)
     {
-        std::cerr << "VR sensor " << sensor::parseSdrIdFromPath(path)
-                  << " mode is: [" << index << "] " << mode << std::endl;
+        lg2::error("VR sensor {PATH} mode is: [{INDEX}] {MODE}", "PATH",
+                   sensor::parseSdrIdFromPath(path), "INDEX", index, "MODE",
+                   mode);
     }
     return true;
 }
@@ -1032,15 +1032,14 @@
         {
             // This is the first reading, show the coefficients
             double step = (max - min) / 255.0;
-            std::cerr
-                << "IPMI sensor "
-                << details::sdrStatsTable.getName((ctx->lun << 8) | sensnum)
-                << ": Range min=" << min << " max=" << max << ", step=" << step
-                << ", Coefficients mValue=" << static_cast<int>(mValue)
-                << " rExp=" << static_cast<int>(rExp)
-                << " bValue=" << static_cast<int>(bValue)
-                << " bExp=" << static_cast<int>(bExp)
-                << " bSigned=" << static_cast<int>(bSigned) << "\n";
+            lg2::error(
+                "IPMI sensor {NAME}: Range min={MIN} max={MAX}, step={STEP}, "
+                "Coefficients mValue={MVALUE} rExp={REXP} bValue={BVALUE} "
+                "bExp={BEXP} bSigned={BSIGNED}",
+                "NAME",
+                details::sdrStatsTable.getName((ctx->lun << 8) | sensnum),
+                "MIN", min, "MAX", max, "STEP", step, "MVALUE", mValue, "REXP",
+                rExp, "BVALUE", bValue, "BEXP", bExp, "BSIGNED", bSigned);
         }
     }
 
diff --git a/dbus-sdr/sensorutils.cpp b/dbus-sdr/sensorutils.cpp
index 8c6952b..fee9d50 100644
--- a/dbus-sdr/sensorutils.cpp
+++ b/dbus-sdr/sensorutils.cpp
@@ -16,9 +16,10 @@
 
 #include "dbus-sdr/sensorutils.hpp"
 
+#include <phosphor-logging/lg2.hpp>
+
 #include <algorithm>
 #include <cmath>
-#include <iostream>
 
 namespace ipmi
 {
@@ -153,19 +154,19 @@
 {
     if (!(std::isfinite(min)))
     {
-        std::cerr << "getSensorAttributes: Min value is unusable\n";
+        lg2::error("getSensorAttributes: Min value is unusable");
         return false;
     }
     if (!(std::isfinite(max)))
     {
-        std::cerr << "getSensorAttributes: Max value is unusable\n";
+        lg2::error("getSensorAttributes: Max value is unusable");
         return false;
     }
 
     // Because NAN has already been tested for, this comparison works
     if (max <= min)
     {
-        std::cerr << "getSensorAttributes: Max must be greater than min\n";
+        lg2::error("getSensorAttributes: Max must be greater than min");
         return false;
     }
 
@@ -210,8 +211,10 @@
     // Step 2: Constrain M, and set rExp accordingly
     if (!(scaleFloatExp(dM, rExp)))
     {
-        std::cerr << "getSensorAttributes: Multiplier range exceeds scale (M="
-                  << dM << ", rExp=" << (int)rExp << ")\n";
+        lg2::error(
+            "getSensorAttributes: Multiplier range exceeds scale (M={DM}, "
+            "rExp={REXP})",
+            "DM", dM, "REXP", rExp);
         return false;
     }
 
@@ -222,7 +225,7 @@
     // The multiplier can not be zero, for obvious reasons
     if (mValue == 0)
     {
-        std::cerr << "getSensorAttributes: Multiplier range below scale\n";
+        lg2::error("getSensorAttributes: Multiplier range below scale");
         return false;
     }
 
@@ -240,9 +243,10 @@
     // Step 4: Constrain B, and set bExp accordingly
     if (!(scaleFloatExp(dB, bExp)))
     {
-        std::cerr << "getSensorAttributes: Offset (B=" << dB << ", bExp="
-                  << (int)bExp << ") exceeds multiplier scale (M=" << dM
-                  << ", rExp=" << (int)rExp << ")\n";
+        lg2::error(
+            "getSensorAttributes: Offset range exceeds scale (B={DB}, "
+            "bExp={BEXP}) exceeds multiplier scale (M={DM}, rExp={REXP})",
+            "DB", dB, "BEXP", bExp, "DM", dM, "REXP", rExp);
         return false;
     }
 
diff --git a/dbus-sdr/storagecommands.cpp b/dbus-sdr/storagecommands.cpp
index 74ac3dd..856699b 100644
--- a/dbus-sdr/storagecommands.cpp
+++ b/dbus-sdr/storagecommands.cpp
@@ -34,7 +34,6 @@
 #include <filesystem>
 #include <fstream>
 #include <functional>
-#include <iostream>
 #include <optional>
 #include <stdexcept>
 #include <string_view>
@@ -1047,7 +1046,7 @@
             }
             catch (const std::invalid_argument&)
             {
-                std::cerr << "Invalid Generator ID\n";
+                lg2::error("Invalid Generator ID");
             }
 
             // Get the sensor type, sensor number, and event type for the sensor
@@ -1073,7 +1072,7 @@
             }
             catch (const std::invalid_argument&)
             {
-                std::cerr << "Invalid Event Direction\n";
+                lg2::error("Invalid Event Direction");
             }
         }
 
@@ -1188,7 +1187,7 @@
                              "xyz.openbmc_project.Logging.IPMI", "Clear");
     if (ec)
     {
-        std::cerr << "error in clear SEL: " << ec.message() << std::endl;
+        lg2::error("error in clear SEL: {MSG}", "MSG", ec.message());
         return ipmi::responseUnspecifiedError();
     }
 
diff --git a/include/dbus-sdr/sdrutils.hpp b/include/dbus-sdr/sdrutils.hpp
index dcbaf59..9d36a50 100644
--- a/include/dbus-sdr/sdrutils.hpp
+++ b/include/dbus-sdr/sdrutils.hpp
@@ -102,11 +102,11 @@
             // Only show this if beginning a new streak
             if (numStreakMiss == 0)
             {
-                std::cerr << "IPMI sensor " << sensorName
-                          << ": Missing reading, byte=" << raw
-                          << ", Reading counts good=" << numReadings
-                          << " miss=" << numMissings
-                          << ", Prior good streak=" << numStreakRead << "\n";
+                lg2::error(
+                    "IPMI sensor {NAME}: Missing reading, byte={BYTE}, Reading "
+                    "counts good={GOOD} miss={MISS}, Prior good streak={STREAK}",
+                    "NAME", sensorName, "BYTE", raw, "GOOD", numReadings,
+                    "MISS", numMissings, "STREAK", numStreakRead);
             }
 
             numStreakRead = 0;
@@ -119,19 +119,20 @@
         // Only show this if beginning a new streak and not the first time
         if ((numStreakRead == 0) && (numReadings != 0))
         {
-            std::cerr << "IPMI sensor " << sensorName
-                      << ": Recovered reading, value=" << reading << " byte="
-                      << raw << ", Reading counts good=" << numReadings
-                      << " miss=" << numMissings
-                      << ", Prior miss streak=" << numStreakMiss << "\n";
+            lg2::error(
+                "IPMI sensor {NAME}: Recovered reading, value={VALUE} byte={BYTE}"
+                ", Reading counts good={GOOD} miss={MISS}, Prior miss "
+                "streak={STREAK}",
+                "NAME", sensorName, "VALUE", reading, "BYTE", raw, "GOOD",
+                numReadings, "MISS", numMissings, "STREAK", numStreakMiss);
         }
 
         // Initialize min/max if the first successful reading
         if (numReadings == 0)
         {
-            std::cerr << "IPMI sensor " << sensorName
-                      << ": First reading, value=" << reading << " byte=" << raw
-                      << "\n";
+            lg2::error(
+                "IPMI sensor {NAME}: First reading, value={VALUE} byte={BYTE}",
+                "NAME", sensorName, "VALUE", reading, "BYTE", raw);
 
             minValue = reading;
             maxValue = reading;
@@ -144,18 +145,18 @@
         // Only provide subsequent output if new min/max established
         if (reading < minValue)
         {
-            std::cerr << "IPMI sensor " << sensorName
-                      << ": Lowest reading, value=" << reading
-                      << " byte=" << raw << "\n";
+            lg2::error(
+                "IPMI sensor {NAME}: Lowest reading, value={VALUE} byte={BYTE}",
+                "NAME", sensorName, "VALUE", reading, "BYTE", raw);
 
             minValue = reading;
         }
 
         if (reading > maxValue)
         {
-            std::cerr << "IPMI sensor " << sensorName
-                      << ": Highest reading, value=" << reading
-                      << " byte=" << raw << "\n";
+            lg2::error(
+                "IPMI sensor {NAME}: Highest reading, value={VALUE} byte={BYTE}",
+                "NAME", sensorName, "VALUE", reading, "BYTE", raw);
 
             maxValue = reading;
         }
