diff --git a/extensions/phal/create_pel.cpp b/extensions/phal/create_pel.cpp
index b6e9c74..6c53228 100644
--- a/extensions/phal/create_pel.cpp
+++ b/extensions/phal/create_pel.cpp
@@ -86,7 +86,7 @@
     }
 }
 
-void createHostRunningPEL()
+void createPEL(const std::string& event)
 {
     std::map<std::string, std::string> additionalData;
     auto bus = sdbusplus::bus::new_default();
@@ -94,8 +94,6 @@
 
     try
     {
-        static constexpr auto bootErrorMessage =
-            "org.open_power.PHAL.Error.HostRunning";
         std::string service =
             util::getService(bus, loggingObjectPath, loggingInterface);
         auto method = bus.new_method_call(service.c_str(), loggingObjectPath,
@@ -104,23 +102,26 @@
             sdbusplus::xyz::openbmc_project::Logging::server::convertForMessage(
                 sdbusplus::xyz::openbmc_project::Logging::server::Entry::Level::
                     Error);
-        method.append(bootErrorMessage, level, additionalData);
+        method.append(event, level, additionalData);
         auto resp = bus.call(method);
     }
     catch (const sdbusplus::exception::SdBusError& e)
     {
-        log<level::ERR>("sdbusplus D-Bus call exception",
-                        entry("OBJPATH=%s", loggingObjectPath),
-                        entry("INTERFACE=%s", loggingInterface),
-                        entry("EXCEPTION=%s", e.what()));
+        log<level::ERR>(fmt::format("sdbusplus D-Bus call exception",
+                                    "OBJPATH={}, INTERFACE={}, EXCEPTION={}",
+                                    loggingObjectPath, loggingInterface,
+                                    e.what())
+                            .c_str());
+        ;
 
         throw std::runtime_error(
             "Error in invoking D-Bus logging create interface");
     }
     catch (std::exception& e)
     {
-        log<level::ERR>("D-bus call exception",
-                        entry("EXCEPTION=%s", e.what()));
+        log<level::ERR>(
+            fmt::format("D-bus call exception", "EXCEPTION={}", e.what())
+                .c_str());
         throw e;
     }
 }
diff --git a/extensions/phal/create_pel.hpp b/extensions/phal/create_pel.hpp
index 98d6ded..a582d0e 100644
--- a/extensions/phal/create_pel.hpp
+++ b/extensions/phal/create_pel.hpp
@@ -21,12 +21,11 @@
 void createBootErrorPEL(const FFDCData& ffdcData, const json& calloutData);
 
 /**
- * Create host running error PEL
+ * @brief Create a PEL for the specified event type
  *
- * The host should not be running so create an error to report this if it
- * is found the host is up.
+ *  @param  event - the event type
  */
-void createHostRunningPEL();
+void createPEL(const std::string& event);
 
 /**
  * @class FFDCFile
diff --git a/procedures/phal/check_host_running.cpp b/procedures/phal/check_host_running.cpp
index 98d1e14..6366e56 100644
--- a/procedures/phal/check_host_running.cpp
+++ b/procedures/phal/check_host_running.cpp
@@ -82,7 +82,7 @@
         }
 
         // Create an error so user knows system is in a bad state
-        openpower::pel::createHostRunningPEL();
+        openpower::pel::createPEL("org.open_power.PHAL.Error.HostRunning");
 
         // Create file for host instance and create in filesystem to
         // indicate to services that host is running.
