diff --git a/extensions/openpower-pels/extended_user_data.cpp b/extensions/openpower-pels/extended_user_data.cpp
index 6370459..6ff394a 100644
--- a/extensions/openpower-pels/extended_user_data.cpp
+++ b/extensions/openpower-pels/extended_user_data.cpp
@@ -61,7 +61,8 @@
     catch (const std::exception& e)
     {
         log<level::ERR>(
-            fmt::format("Cannot unflatten ExtendedUserData: {}", e.what())
+            fmt::format("Cannot unflatten ExtendedUserData section: {}",
+                        e.what())
                 .c_str());
         _valid = false;
     }
@@ -89,7 +90,8 @@
     if (header().id != static_cast<uint16_t>(SectionID::extUserData))
     {
         log<level::ERR>(
-            fmt::format("Invalid ExtendedUserData section ID {}", header().id)
+            fmt::format("Invalid ExtendedUserData section ID: {0:#x}",
+                        header().id)
                 .c_str());
         _valid = false;
     }
diff --git a/extensions/openpower-pels/extended_user_header.cpp b/extensions/openpower-pels/extended_user_header.cpp
index 7b381e8..5be0a86 100644
--- a/extensions/openpower-pels/extended_user_header.cpp
+++ b/extensions/openpower-pels/extended_user_header.cpp
@@ -19,6 +19,8 @@
 #include "pel_types.hpp"
 #include "pel_values.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -40,8 +42,9 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten extended user header",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten extended user header: {}", e.what())
+                .c_str());
         _valid = false;
     }
 }
@@ -107,15 +110,19 @@
 
     if (header().id != static_cast<uint16_t>(SectionID::extendedUserHeader))
     {
-        log<level::ERR>("Invalid failing Extended User Header section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(
+            fmt::format("Invalid ExtendedUserHeader section ID: {0:#x}",
+                        header().id)
+                .c_str());
         failed = true;
     }
 
     if (header().version != extendedUserHeaderVersion)
     {
-        log<level::ERR>("Invalid Extended User Header version",
-                        entry("VERSION=0x%X", header().version));
+        log<level::ERR>(
+            fmt::format("Invalid ExtendedUserHeader version: {0:#x}",
+                        header().version)
+                .c_str());
         failed = true;
     }
 
diff --git a/extensions/openpower-pels/failing_mtms.cpp b/extensions/openpower-pels/failing_mtms.cpp
index 0e82bd0..d4db58f 100644
--- a/extensions/openpower-pels/failing_mtms.cpp
+++ b/extensions/openpower-pels/failing_mtms.cpp
@@ -19,6 +19,8 @@
 #include "pel_types.hpp"
 #include "pel_values.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -51,8 +53,9 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten failing MTM section",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten failing MTM section: {}", e.what())
+                .c_str());
         _valid = false;
     }
 }
@@ -63,15 +66,17 @@
 
     if (header().id != static_cast<uint16_t>(SectionID::failingMTMS))
     {
-        log<level::ERR>("Invalid failing MTMS section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(
+            fmt::format("Invalid failing MTMS section ID: {0:#x}", header().id)
+                .c_str());
         failed = true;
     }
 
     if (header().version != failingMTMSVersion)
     {
-        log<level::ERR>("Invalid failing MTMS version",
-                        entry("VERSION=0x%X", header().version));
+        log<level::ERR>(fmt::format("Invalid failing MTMS version: {0:#x}",
+                                    header().version)
+                            .c_str());
         failed = true;
     }
 
diff --git a/extensions/openpower-pels/generic.cpp b/extensions/openpower-pels/generic.cpp
index 528b46d..0aed07b 100644
--- a/extensions/openpower-pels/generic.cpp
+++ b/extensions/openpower-pels/generic.cpp
@@ -15,6 +15,8 @@
  */
 #include "generic.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -54,8 +56,9 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten generic section",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten generic section: {}", e.what())
+                .c_str());
         _valid = false;
     }
 }
diff --git a/extensions/openpower-pels/private_header.cpp b/extensions/openpower-pels/private_header.cpp
index 31e0f61..a3173ea 100644
--- a/extensions/openpower-pels/private_header.cpp
+++ b/extensions/openpower-pels/private_header.cpp
@@ -20,6 +20,8 @@
 #include "pel_types.hpp"
 #include "pel_values.hpp"
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -77,8 +79,9 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten private header",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten privatej header: {}", e.what())
+                .c_str());
         _valid = false;
     }
 }
@@ -126,22 +129,26 @@
 
     if (header().id != static_cast<uint16_t>(SectionID::privateHeader))
     {
-        log<level::ERR>("Invalid private header section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(fmt::format("Invalid private header section ID: {0:#x}",
+                                    header().id)
+                            .c_str());
         failed = true;
     }
 
     if (header().version != privateHeaderVersion)
     {
-        log<level::ERR>("Invalid private header version",
-                        entry("VERSION=0x%X", header().version));
+        log<level::ERR>(fmt::format("Invalid private header version: {0:#x}",
+                                    header().version)
+                            .c_str());
         failed = true;
     }
 
     if (_sectionCount < minSectionCount)
     {
-        log<level::ERR>("Invalid section count in private header",
-                        entry("SECTION_COUNT=0x%X", _sectionCount));
+        log<level::ERR>(
+            fmt::format("Invalid section count in private header: {0:#x}",
+                        _sectionCount)
+                .c_str());
         failed = true;
     }
 
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 8058155..0b4de6c 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -306,7 +306,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten SRC", entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten SRC: {}", e.what()).c_str());
         _valid = false;
     }
 }
@@ -449,15 +450,17 @@
     if ((header().id != static_cast<uint16_t>(SectionID::primarySRC)) &&
         (header().id != static_cast<uint16_t>(SectionID::secondarySRC)))
     {
-        log<level::ERR>("Invalid SRC section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(
+            fmt::format("Invalid SRC section ID: {0:#x}", header().id).c_str());
         failed = true;
     }
 
     // Check the version in the SRC, not in the header
     if (_version != srcVersion)
     {
-        log<level::ERR>("Invalid SRC version", entry("VERSION=0x%X", _version));
+        log<level::ERR>(
+            fmt::format("Invalid SRC version: {0:#x}", header().version)
+                .c_str());
         failed = true;
     }
 
diff --git a/extensions/openpower-pels/user_data.cpp b/extensions/openpower-pels/user_data.cpp
index e8a72ef..0b07b8b 100644
--- a/extensions/openpower-pels/user_data.cpp
+++ b/extensions/openpower-pels/user_data.cpp
@@ -22,6 +22,8 @@
 #include "user_data_json.hpp"
 #endif
 
+#include <fmt/format.h>
+
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -61,8 +63,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten user data",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten user data: {}", e.what()).c_str());
         _valid = false;
     }
 }
@@ -85,8 +87,9 @@
 {
     if (header().id != static_cast<uint16_t>(SectionID::userData))
     {
-        log<level::ERR>("Invalid user data section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(
+            fmt::format("Invalid UserData section ID: {0:#x}", header().id)
+                .c_str());
         _valid = false;
     }
     else
diff --git a/extensions/openpower-pels/user_header.cpp b/extensions/openpower-pels/user_header.cpp
index da42bbf..813457f 100644
--- a/extensions/openpower-pels/user_header.cpp
+++ b/extensions/openpower-pels/user_header.cpp
@@ -229,8 +229,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten user header",
-                        entry("ERROR=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("Cannot unflatten user header: {}", e.what()).c_str());
         _valid = false;
     }
 }
@@ -240,15 +240,17 @@
     bool failed = false;
     if (header().id != static_cast<uint16_t>(SectionID::userHeader))
     {
-        log<level::ERR>("Invalid user header section ID",
-                        entry("ID=0x%X", header().id));
+        log<level::ERR>(
+            fmt::format("Invalid user header section ID: {0:#x}", header().id)
+                .c_str());
         failed = true;
     }
 
     if (header().version != userHeaderVersion)
     {
-        log<level::ERR>("Invalid user header version",
-                        entry("VERSION=0x%X", header().version));
+        log<level::ERR>(
+            fmt::format("Invalid user header version: {0:#x}", header().version)
+                .c_str());
         failed = true;
     }
 
