diff --git a/configure.ac b/configure.ac
index 9e40b41..2e4cdd1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,6 +75,7 @@
 AC_DEFINE(INVENTORY_ROOT, "/xyz/openbmc_project/inventory", [The inventory root.])
 AC_DEFINE(CALLOUT_FWD_ASSOCIATION, "callout", [The name of the callout's forward association.])
 AC_DEFINE(CALLOUT_REV_ASSOCIATION, "fault", [The name of the callout's reverse association.])
+AC_DEFINE(BMC_VERSION_FILE, "/etc/os-release", [The file that contains the BMC firmware version])
 
 AC_ARG_VAR(YAML_DIR_TEST, [The path to the test error yaml files.])
 AS_IF([test "x$YAML_DIR_TEST" == "x"], \
diff --git a/log_manager.cpp b/log_manager.cpp
index 6717a7a..641ed7b 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -446,6 +446,31 @@
     return;
 }
 
+std::string Manager::readFWVersion()
+{
+    std::string version;
+    std::ifstream versionFile{BMC_VERSION_FILE};
+    std::string line;
+    static constexpr auto VERSION_ID = "VERSION_ID=";
+
+    while (std::getline(versionFile, line))
+    {
+        if (line.find(VERSION_ID) != std::string::npos)
+        {
+            auto pos = line.find_first_of('"') + 1;
+            version = line.substr(pos, line.find_last_of('"') - pos);
+            break;
+        }
+    }
+
+    if (version.empty())
+    {
+        log<level::ERR>("Unable to read BMC firmware version");
+    }
+
+    return version;
+}
+
 } // namespace internal
 } // namespace logging
 } // namepsace phosphor
diff --git a/log_manager.hpp b/log_manager.hpp
index d62a25e..d5ca4e9 100644
--- a/log_manager.hpp
+++ b/log_manager.hpp
@@ -54,7 +54,8 @@
         Manager(sdbusplus::bus::bus& bus, const char* objPath) :
                 details::ServerObject<details::ManagerIface>(bus, objPath),
                 busLog(bus),
-                entryId(0){};
+                entryId(0),
+                fwVersion(readFWVersion()) {};
 
         /*
          * @fn commit()
@@ -136,6 +137,12 @@
          */
         void journalSync();
 
+        /** @brief Reads the BMC code level
+         *
+         *  @return std::string - the version string
+         */
+        static std::string readFWVersion();
+
         /** @brief Persistent sdbusplus DBus bus connection. */
         sdbusplus::bus::bus& busLog;
 
@@ -150,6 +157,9 @@
 
         /** @brief Id of last error log entry */
         uint32_t entryId;
+
+        /** @brief The BMC firmware version */
+        const std::string fwVersion;
 };
 
 } //namespace internal
