diff --git a/pmbus.cpp b/pmbus.cpp
index 7bdda54..8b6d747 100644
--- a/pmbus.cpp
+++ b/pmbus.cpp
@@ -45,6 +45,28 @@
     }
 };
 
+/**
+ * @brief Returns the canonical path if it exists
+ *        otherwise returns the path passed in.
+ *
+ * @param[in] path - The path to check
+ *
+ * @return fs::path - Either the canonical or original path
+ */
+static fs::path tryCanonical(const fs::path& path)
+{
+    std::error_code ec;
+    auto canonical = fs::canonical(path, ec);
+
+    if (ec)
+    {
+        lg2::error("Could not get canonical path from {PATH}", "PATH", path);
+        return path;
+    }
+
+    return canonical;
+}
+
 std::string PMBus::insertPageNum(const std::string& templateName, size_t page)
 {
     auto name = templateName;
@@ -157,7 +179,7 @@
 
         elog<ReadFailure>(
             metadata::CALLOUT_ERRNO(rc),
-            metadata::CALLOUT_DEVICE_PATH(fs::canonical(basePath).c_str()));
+            metadata::CALLOUT_DEVICE_PATH(tryCanonical(basePath).c_str()));
     }
 
     return value != 0;
@@ -199,7 +221,7 @@
 
             elog<ReadFailure>(
                 metadata::CALLOUT_ERRNO(rc),
-                metadata::CALLOUT_DEVICE_PATH(fs::canonical(basePath).c_str()));
+                metadata::CALLOUT_DEVICE_PATH(tryCanonical(basePath).c_str()));
         }
         else
         {
@@ -236,7 +258,7 @@
 
         elog<ReadFailure>(
             metadata::CALLOUT_ERRNO(rc),
-            metadata::CALLOUT_DEVICE_PATH(fs::canonical(basePath).c_str()));
+            metadata::CALLOUT_DEVICE_PATH(tryCanonical(basePath).c_str()));
     }
 
     return data;
@@ -276,7 +298,7 @@
 
                 elog<ReadFailure>(metadata::CALLOUT_ERRNO(rc),
                                   metadata::CALLOUT_DEVICE_PATH(
-                                      fs::canonical(basePath).c_str()));
+                                      tryCanonical(basePath).c_str()));
             }
         }
         return data;
@@ -311,7 +333,7 @@
 
         elog<WriteFailure>(
             metadata::CALLOUT_ERRNO(rc),
-            metadata::CALLOUT_DEVICE_PATH(fs::canonical(basePath).c_str()));
+            metadata::CALLOUT_DEVICE_PATH(tryCanonical(basePath).c_str()));
     }
 }
 
@@ -345,7 +367,7 @@
 
         elog<WriteFailure>(
             metadata::CALLOUT_ERRNO(rc),
-            metadata::CALLOUT_DEVICE_PATH(fs::canonical(basePath).c_str()));
+            metadata::CALLOUT_DEVICE_PATH(tryCanonical(basePath).c_str()));
     }
 }
 
