diff --git a/cooling-type/Makefile.am b/cooling-type/Makefile.am
index 181812e..b39f80e 100644
--- a/cooling-type/Makefile.am
+++ b/cooling-type/Makefile.am
@@ -20,6 +20,7 @@
 	$(SDBUSPLUS_LIBS) \
 	$(PHOSPHOR_LOGGING_LIBS) \
 	$(LIBEVDEV_LIBS) \
-	${PHOSPHOR_DBUS_INTERFACES_LIBS}
+	${PHOSPHOR_DBUS_INTERFACES_LIBS} \
+	$(FMT_LIBS)
 
 # vim: tabstop=8 noexpandtab
diff --git a/cooling-type/cooling_type.cpp b/cooling-type/cooling_type.cpp
index 86b1385..5290774 100644
--- a/cooling-type/cooling_type.cpp
+++ b/cooling-type/cooling_type.cpp
@@ -4,6 +4,7 @@
 #include "utility.hpp"
 
 #include <fcntl.h>
+#include <fmt/format.h>
 #include <libevdev/libevdev.h>
 #include <unistd.h>
 
@@ -35,8 +36,11 @@
         return decltype(evdevOpen(0))(gpioDev);
     }
 
-    log<level::ERR>("Failed to get libevdev from file descriptor",
-                    entry("RC=%d", rc));
+    log<level::ERR>(
+        fmt::format(
+            "Failed to get libevdev from file descriptor {}, return code {}",
+            fd, rc)
+            .c_str());
     elog<InternalFailure>();
     return decltype(evdevOpen(0))(nullptr);
 }
@@ -64,8 +68,10 @@
         libevdev_fetch_event_value(gpioDev.get(), EV_KEY, keycode, &value);
     if (0 == fetch_rc)
     {
-        log<level::ERR>("Device does not support event type",
-                        entry("KEYCODE=%d", keycode));
+        log<level::ERR>(
+            fmt::format("Device does not support event type keycode {}",
+                        keycode)
+                .c_str());
         elog<InternalFailure>();
     }
 
diff --git a/cooling-type/main.cpp b/cooling-type/main.cpp
index 6c3b199..5348afa 100644
--- a/cooling-type/main.cpp
+++ b/cooling-type/main.cpp
@@ -2,6 +2,8 @@
 #include "cooling_type.hpp"
 #include "sdbusplus.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
 
@@ -68,11 +70,14 @@
         }
         catch (DBusMethodError& dme)
         {
-            log<level::ERR>("Uncaught DBus method failure exception",
-                            entry("BUSNAME=%s", dme.busName.c_str()),
-                            entry("PATH=%s", dme.path.c_str()),
-                            entry("INTERFACE=%s", dme.interface.c_str()),
-                            entry("METHOD=%s", dme.method.c_str()));
+            log<level::ERR>(
+                fmt::format("Uncaught DBus method failure exception "
+                            "Busname: {} "
+                            "Path: {} "
+                            "Interface: {} "
+                            "Method: {}",
+                            dme.busName, dme.path, dme.interface, dme.method)
+                    .c_str());
         }
         catch (std::exception& err)
         {
diff --git a/presence/fallback.cpp b/presence/fallback.cpp
index 726c988..4a025a7 100644
--- a/presence/fallback.cpp
+++ b/presence/fallback.cpp
@@ -18,6 +18,8 @@
 #include "fan.hpp"
 #include "psensor.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 #include <algorithm>
@@ -52,8 +54,9 @@
                 ++activeSensor;
             }
             phosphor::logging::log<phosphor::logging::level::INFO>(
-                "Using backup presence sensor.",
-                phosphor::logging::entry("FAN=%s", std::get<1>(fan).c_str()));
+                fmt::format("Using backup presence sensor for fan {}",
+                            std::get<1>(fan))
+                    .c_str());
             activeSensor = it;
         }
     }
@@ -77,8 +80,9 @@
     if (activeSensor != sensors.begin())
     {
         phosphor::logging::log<phosphor::logging::level::INFO>(
-            "Using backup presence sensor.",
-            phosphor::logging::entry("FAN=%s", std::get<1>(fan).c_str()));
+            fmt::format("Using backup presence sensor for fan {}",
+                        std::get<1>(fan))
+                .c_str());
     }
 
     // Callout the broken sensors.
diff --git a/presence/tach.cpp b/presence/tach.cpp
index 6cddc23..9d6c0e3 100644
--- a/presence/tach.cpp
+++ b/presence/tach.cpp
@@ -17,6 +17,8 @@
 
 #include "rpolicy.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 #include <string>
@@ -71,8 +73,9 @@
             // Assume not spinning.
 
             std::get<double>(s) = 0;
-            log<level::INFO>("Unable to read fan tach sensor.",
-                             entry("SENSOR=%s", tachPath.c_str()));
+            log<level::INFO>(
+                fmt::format("Unable to read fan tach sensor {}", tachPath)
+                    .c_str());
         }
     }
 
diff --git a/utility.hpp b/utility.hpp
index 271bb9c..6563243 100644
--- a/utility.hpp
+++ b/utility.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <fcntl.h>
+#include <fmt/format.h>
 #include <unistd.h>
 
 #include <phosphor-logging/elog-errors.hpp>
@@ -63,8 +64,9 @@
         fd = ::open(pathname.c_str(), flags);
         if (-1 == fd)
         {
-            log<level::ERR>("Failed to open file device: ",
-                            entry("PATHNAME=%s", pathname.c_str()));
+            log<level::ERR>(
+                fmt::format("Failed to open file device path {}", pathname)
+                    .c_str());
             elog<InternalFailure>();
         }
     }
