diff --git a/src/TachSensor.cpp b/src/TachSensor.cpp
index 03ff4a5..295c7e6 100644
--- a/src/TachSensor.cpp
+++ b/src/TachSensor.cpp
@@ -35,7 +35,7 @@
                        sdbusplus::asio::object_server& objectServer,
                        std::shared_ptr<sdbusplus::asio::connection>& conn,
                        std::unique_ptr<PresenceSensor>&& presenceSensor,
-                       const std::shared_ptr<RedundancySensor>& redundancy,
+                       std::optional<RedundancySensor>* redundancy,
                        boost::asio::io_service& io, const std::string& fanName,
                        std::vector<thresholds::Threshold>&& _thresholds,
                        const std::string& sensorConfiguration,
@@ -187,17 +187,18 @@
 void TachSensor::checkThresholds(void)
 {
     bool status = thresholds::checkThresholds(this);
-    if (redundancy)
+    if (redundancy && *redundancy)
     {
-        redundancy->update("/xyz/openbmc_project/sensors/fan_tach/" + name,
-                           !status);
+        (*redundancy)
+            ->update("/xyz/openbmc_project/sensors/fan_tach/" + name, !status);
     }
 }
 
 PresenceSensor::PresenceSensor(const size_t index, bool inverted,
-                               boost::asio::io_service& io) :
+                               boost::asio::io_service& io,
+                               const std::string& name) :
     inverted(inverted),
-    inputDev(io)
+    inputDev(io), name(name)
 {
     // todo: use gpiodaemon
     std::string device = gpioPath + std::string("gpio") + std::to_string(index);
@@ -267,7 +268,18 @@
         {
             value = !value;
         }
-        status = value;
+        if (value != status)
+        {
+            status = value;
+            if (status)
+            {
+                logFanInserted(name);
+            }
+            else
+            {
+                logFanRemoved(name);
+            }
+        }
     }
 }
 
@@ -305,7 +317,7 @@
     statuses[name] = failed;
     size_t failedCount = 0;
 
-    std::string state = "Full";
+    std::string newState = redundancy::full;
     for (const auto& status : statuses)
     {
         if (status.second)
@@ -314,13 +326,25 @@
         }
         if (failedCount > count)
         {
-            state = "Failed";
+            newState = redundancy::failed;
             break;
         }
         else if (failedCount)
         {
-            state = "Degraded";
+            newState = redundancy::degraded;
         }
     }
-    iface->set_property("Status", state);
+    if (state != newState)
+    {
+        if (state == redundancy::full)
+        {
+            logFanRedundancyLost();
+        }
+        else if (newState == redundancy::full)
+        {
+            logFanRedundancyRestored();
+        }
+        state = newState;
+        iface->set_property("Status", state);
+    }
 }
