diff --git a/oem/ibm/libpldmresponder/file_io.hpp b/oem/ibm/libpldmresponder/file_io.hpp
index e455583..495cf24 100644
--- a/oem/ibm/libpldmresponder/file_io.hpp
+++ b/oem/ibm/libpldmresponder/file_io.hpp
@@ -117,7 +117,7 @@
     int file = open(path.string().c_str(), flags);
     if (file == -1)
     {
-        error("File at path '{PATH}' does not exist", "PATH", path.string());
+        error("File at path '{PATH}' does not exist", "PATH", path);
         encode_rw_file_memory_resp(instanceId, command, PLDM_ERROR, 0,
                                    responsePtr);
         return response;
diff --git a/oem/ibm/libpldmresponder/file_io_type_pcie.cpp b/oem/ibm/libpldmresponder/file_io_type_pcie.cpp
index 92ceff9..b95361f 100644
--- a/oem/ibm/libpldmresponder/file_io_type_pcie.cpp
+++ b/oem/ibm/libpldmresponder/file_io_type_pcie.cpp
@@ -59,7 +59,7 @@
     catch (const std::exception& e)
     {
         error("Create/Write data to the File type {TYPE}, failed {ERROR}",
-              "TYPE", (int)infoType, "ERROR", e);
+              "TYPE", infoType, "ERROR", e);
         return PLDM_ERROR;
     }
 }
@@ -87,7 +87,7 @@
     catch (const std::exception& e)
     {
         error("Create/Write data to the File type {TYPE}, failed {ERROR}",
-              "TYPE", (int)infoType, "ERROR", e);
+              "TYPE", infoType, "ERROR", e);
         return PLDM_ERROR;
     }
 
diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
index 906e964..301de47 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
@@ -322,7 +322,7 @@
         {
             error(
                 "Failed to decode platform event message response for code update event with response code '{RC}' and completion code '{CC}'",
-                "RC", rc, "CC", static_cast<unsigned>(completionCode));
+                "RC", rc, "CC", completionCode);
         }
     };
     auto rc = handler->registerRequest(
diff --git a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
index 4ea7b2f..da9e4d3 100644
--- a/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
+++ b/oem/ibm/libpldmresponder/platform_oem_ibm.cpp
@@ -98,7 +98,7 @@
         {
             error(
                 "Failed to decode BIOS Attribute update platform event message response with response code '{RC}' and completion code '{CC}'",
-                "RC", rc, "CC", static_cast<unsigned>(completionCode));
+                "RC", rc, "CC", completionCode);
         }
     };
     rc = handler->registerRequest(
diff --git a/oem/ibm/requester/dbus_to_file_handler.cpp b/oem/ibm/requester/dbus_to_file_handler.cpp
index 19b3e6b..b90690e 100644
--- a/oem/ibm/requester/dbus_to_file_handler.cpp
+++ b/oem/ibm/requester/dbus_to_file_handler.cpp
@@ -73,7 +73,7 @@
         {
             error(
                 "Failed to decode new file available response or remote terminus returned error, response code '{RC}' and completion code '{CC}'",
-                "RC", rc, "CC", static_cast<unsigned>(completionCode));
+                "RC", rc, "CC", completionCode);
             reportResourceDumpFailure();
         }
     };
@@ -279,7 +279,7 @@
         {
             error(
                 "Failed to decode new file available response for vmi or remote terminus returned error, response code '{RC}' and completion code '{CC}'",
-                "RC", rc, "CC", static_cast<unsigned>(completionCode));
+                "RC", rc, "CC", completionCode);
             pldm::utils::reportError(
                 "xyz.openbmc_project.bmc.pldm.InternalFailure");
         }
