diff --git a/manager.cpp b/manager.cpp
index 60d26ef..45982fc 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -29,7 +29,12 @@
              sdbusplus::bus::match::rules::interfacesAdded() +
                  sdbusplus::bus::match::rules::path_namespace(LOGGING_PATH),
              std::bind(std::mem_fn(&Manager::interfaceAdded), this,
-                       std::placeholders::_1))
+                       std::placeholders::_1)),
+    removeMatch(bus,
+                sdbusplus::bus::match::rules::interfacesRemoved() +
+                    sdbusplus::bus::match::rules::path_namespace(LOGGING_PATH),
+                std::bind(std::mem_fn(&Manager::interfaceRemoved), this,
+                          std::placeholders::_1))
 #ifdef USE_POLICY_INTERFACE
     ,
     policies(POLICY_JSON_PATH)
@@ -145,5 +150,29 @@
         create(path, propertyMap->second);
     }
 }
+
+void Manager::interfaceRemoved(sdbusplus::message::message& msg)
+{
+    sdbusplus::message::object_path path;
+    DbusInterfaceList interfaces;
+
+    msg.read(path, interfaces);
+
+    // If the Logging.Entry interface was removed, then remove
+    // our object
+
+    auto i = std::find(interfaces.begin(), interfaces.end(), LOGGING_IFACE);
+
+    if (i != interfaces.end())
+    {
+        auto id = getEntryID(path);
+
+        auto entry = entries.find(id);
+        if (entry != entries.end())
+        {
+            entries.erase(entry);
+        }
+    }
+}
 }
 }
diff --git a/manager.hpp b/manager.hpp
index d09d103..0320b0c 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -66,6 +66,16 @@
     void interfaceAdded(sdbusplus::message::message& msg);
 
     /**
+     * The callback for an interfaces removed signal
+     *
+     * Removes the IBM interfaces for the log entry
+     * that was just removed.
+     *
+     * @param[in] msg - the sdbusplus message
+     */
+    void interfaceRemoved(sdbusplus::message::message& msg);
+
+    /**
      * Creates the IBM interfaces for all existing error log
      * entries.
      */
@@ -135,6 +145,11 @@
      */
     sdbusplus::bus::match_t addMatch;
 
+    /**
+     * The match object for interfacesRemoved
+     */
+    sdbusplus::bus::match_t removeMatch;
+
     using EntryID = uint32_t;
     using InterfaceMap = std::map<InterfaceType, std::experimental::any>;
     using EntryMap = std::map<EntryID, InterfaceMap>;
