diff --git a/extensions/openpower-pels/callout.cpp b/extensions/openpower-pels/callout.cpp
index f54d77e..a1d5ebe 100644
--- a/extensions/openpower-pels/callout.cpp
+++ b/extensions/openpower-pels/callout.cpp
@@ -15,7 +15,9 @@
  */
 #include "callout.hpp"
 
-#include <phosphor-logging/log.hpp>
+#include "trace.hpp"
+
+#include <fmt/format.h>
 
 namespace openpower
 {
@@ -24,8 +26,6 @@
 namespace src
 {
 
-using namespace phosphor::logging;
-
 constexpr size_t locationCodeMaxSize = 80;
 
 Callout::Callout(Stream& pel)
@@ -70,8 +70,8 @@
                 break;
             }
             default:
-                log<level::ERR>("Invalid Callout subsection type",
-                                entry("CALLOUT_TYPE=0x%X", type));
+                trace::error(
+                    fmt::format("Invalid Callout subsection type {}", type));
                 throw std::runtime_error("Invalid Callout subsection type");
                 break;
         }
diff --git a/extensions/openpower-pels/callouts.cpp b/extensions/openpower-pels/callouts.cpp
index 885dda5..ae95d3e 100644
--- a/extensions/openpower-pels/callouts.cpp
+++ b/extensions/openpower-pels/callouts.cpp
@@ -15,7 +15,9 @@
  */
 #include "callouts.hpp"
 
-#include <phosphor-logging/log.hpp>
+#include "trace.hpp"
+
+#include <algorithm>
 
 namespace openpower
 {
@@ -58,8 +60,7 @@
     }
     else
     {
-        using namespace phosphor::logging;
-        log<level::INFO>("Dropping PEL callout because at max");
+        trace::info("Dropping PEL callout because at max");
     }
 
     // Mapping including the  3 Medium levels as A,B and C
@@ -76,4 +77,4 @@
 
 } // namespace src
 } // namespace pels
-} // namespace openpower
\ No newline at end of file
+} // namespace openpower
diff --git a/extensions/openpower-pels/extended_user_data.cpp b/extensions/openpower-pels/extended_user_data.cpp
index 6370459..cc7d901 100644
--- a/extensions/openpower-pels/extended_user_data.cpp
+++ b/extensions/openpower-pels/extended_user_data.cpp
@@ -19,15 +19,13 @@
 #ifdef PELTOOL
 #include "user_data_json.hpp"
 #endif
-#include <fmt/format.h>
+#include "trace.hpp"
 
-#include <phosphor-logging/log.hpp>
+#include <fmt/format.h>
 
 namespace openpower::pels
 {
 
-using namespace phosphor::logging;
-
 void ExtendedUserData::unflatten(Stream& stream)
 {
     stream >> _header;
@@ -60,9 +58,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>(
-            fmt::format("Cannot unflatten ExtendedUserData: {}", e.what())
-                .c_str());
+        trace::error(
+            fmt::format("Cannot unflatten ExtendedUserData: {}", e.what()));
         _valid = false;
     }
 }
@@ -88,9 +85,8 @@
 {
     if (header().id != static_cast<uint16_t>(SectionID::extUserData))
     {
-        log<level::ERR>(
-            fmt::format("Invalid ExtendedUserData section ID {}", header().id)
-                .c_str());
+        trace::error(
+            fmt::format("Invalid ExtendedUserData section ID {}", header().id));
         _valid = false;
     }
     else
diff --git a/extensions/openpower-pels/private_header.cpp b/extensions/openpower-pels/private_header.cpp
index 31e0f61..74d895c 100644
--- a/extensions/openpower-pels/private_header.cpp
+++ b/extensions/openpower-pels/private_header.cpp
@@ -19,8 +19,9 @@
 #include "log_id.hpp"
 #include "pel_types.hpp"
 #include "pel_values.hpp"
+#include "trace.hpp"
 
-#include <phosphor-logging/log.hpp>
+#include <fmt/format.h>
 
 namespace openpower
 {
@@ -28,7 +29,6 @@
 {
 
 namespace pv = openpower::pels::pel_values;
-using namespace phosphor::logging;
 
 PrivateHeader::PrivateHeader(uint16_t componentID, uint32_t obmcLogID,
                              uint64_t timestamp)
@@ -77,8 +77,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten private header",
-                        entry("ERROR=%s", e.what()));
+        trace::error(
+            fmt::format("Cannot unflatten private header: {}", e.what()));
         _valid = false;
     }
 }
@@ -126,22 +126,22 @@
 
     if (header().id != static_cast<uint16_t>(SectionID::privateHeader))
     {
-        log<level::ERR>("Invalid private header section ID",
-                        entry("ID=0x%X", header().id));
+        trace::error(fmt::format("Invalid private header section ID: {:#X}",
+                                 header().id));
         failed = true;
     }
 
     if (header().version != privateHeaderVersion)
     {
-        log<level::ERR>("Invalid private header version",
-                        entry("VERSION=0x%X", header().version));
+        trace::error(fmt::format("Invalid private header version: {}",
+                                 header().version));
         failed = true;
     }
 
     if (_sectionCount < minSectionCount)
     {
-        log<level::ERR>("Invalid section count in private header",
-                        entry("SECTION_COUNT=0x%X", _sectionCount));
+        trace::error(fmt::format("Invalid section count in private header: {}",
+                                 _sectionCount));
         failed = true;
     }
 
diff --git a/extensions/openpower-pels/tools/peltool.cpp b/extensions/openpower-pels/tools/peltool.cpp
index 3acfd8a..0e24850 100644
--- a/extensions/openpower-pels/tools/peltool.cpp
+++ b/extensions/openpower-pels/tools/peltool.cpp
@@ -21,14 +21,15 @@
 #include "../pel.hpp"
 #include "../pel_types.hpp"
 #include "../pel_values.hpp"
+#include "trace.hpp"
 
 #include <Python.h>
+#include <fmt/format.h>
 
 #include <CLI/CLI.hpp>
 #include <bitset>
 #include <fstream>
 #include <iostream>
-#include <phosphor-logging/log.hpp>
 #include <regex>
 #include <string>
 #include <xyz/openbmc_project/Common/File/error.hpp>
@@ -36,7 +37,6 @@
 #include "config_main.h"
 
 namespace fs = std::filesystem;
-using namespace phosphor::logging;
 using namespace openpower::pels;
 namespace file_error = sdbusplus::xyz::openbmc_project::Common::File::Error;
 namespace message = openpower::pels::message;
@@ -320,8 +320,7 @@
         std::vector<uint8_t> data = getFileData(fileName);
         if (data.empty())
         {
-            log<level::ERR>("Empty PEL file",
-                            entry("FILENAME=%s", fileName.c_str()));
+            trace::error(fmt::format("Empty PEL file {}", fileName));
             return listStr;
         }
         PEL pel{data};
@@ -444,9 +443,8 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Hit exception while reading PEL File",
-                        entry("FILENAME=%s", fileName.c_str()),
-                        entry("ERROR=%s", e.what()));
+        trace::error(fmt::format("Hit exception when reading PEL file {}: {}",
+                                 fileName, e.what()));
     }
     return listStr;
 }
@@ -648,7 +646,7 @@
  */
 void deleteAllPELs()
 {
-    log<level::INFO>("peltool deleting all event logs");
+    trace::info("peltool deleting all event logs");
 
     for (const auto& entry : fs::directory_iterator(pelLogDir()))
     {
diff --git a/extensions/openpower-pels/trace.hpp b/extensions/openpower-pels/trace.hpp
new file mode 100644
index 0000000..6bf65cf
--- /dev/null
+++ b/extensions/openpower-pels/trace.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include <phosphor-logging/log.hpp>
+
+using namespace phosphor::logging;
+
+namespace openpower::pels::trace
+{
+
+inline void info(const std::string& message)
+{
+    log<level::INFO>(message.c_str());
+}
+
+inline void error(const std::string& message)
+{
+    log<level::ERR>(message.c_str());
+}
+
+inline void warning(const std::string& message)
+{
+    log<level::WARNING>(message.c_str());
+}
+
+inline void debug(const std::string& message)
+{
+    log<level::DEBUG>(message.c_str());
+}
+
+} // namespace openpower::pels::trace
diff --git a/extensions/openpower-pels/user_data.cpp b/extensions/openpower-pels/user_data.cpp
index e8a72ef..e400e35 100644
--- a/extensions/openpower-pels/user_data.cpp
+++ b/extensions/openpower-pels/user_data.cpp
@@ -18,19 +18,19 @@
 #include "json_utils.hpp"
 #include "pel_types.hpp"
 #include "user_data_formats.hpp"
+
+#include <fmt/format.h>
 #ifdef PELTOOL
 #include "user_data_json.hpp"
 #endif
 
-#include <phosphor-logging/log.hpp>
+#include "trace.hpp"
 
 namespace openpower
 {
 namespace pels
 {
 
-using namespace phosphor::logging;
-
 void UserData::unflatten(Stream& stream)
 {
     stream >> _header;
@@ -61,8 +61,7 @@
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Cannot unflatten user data",
-                        entry("ERROR=%s", e.what()));
+        trace::error(fmt::format("Cannot unflatten user data: {}", e.what()));
         _valid = false;
     }
 }
@@ -85,8 +84,8 @@
 {
     if (header().id != static_cast<uint16_t>(SectionID::userData))
     {
-        log<level::ERR>("Invalid user data section ID",
-                        entry("ID=0x%X", header().id));
+        trace::error(
+            fmt::format("Invalid user data section ID: {}", header().id));
         _valid = false;
     }
     else
