diff --git a/test/openpower-pels/pel_manager_test.cpp b/test/openpower-pels/pel_manager_test.cpp
index 28802f4..5305468 100644
--- a/test/openpower-pels/pel_manager_test.cpp
+++ b/test/openpower-pels/pel_manager_test.cpp
@@ -26,6 +26,22 @@
 using namespace openpower::pels;
 namespace fs = std::filesystem;
 
+class TestLogger
+{
+  public:
+    void log(const std::string& name, phosphor::logging::Entry::Level level,
+             const EventLogger::ADMap& additionalData)
+    {
+        errName = name;
+        errLevel = level;
+        ad = additionalData;
+    }
+
+    std::string errName;
+    phosphor::logging::Entry::Level errLevel;
+    EventLogger::ADMap ad;
+};
+
 class ManagerTest : public CleanPELFiles
 {
   public:
@@ -43,6 +59,7 @@
     sdbusplus::bus::bus bus = sdbusplus::bus::new_default();
     phosphor::logging::internal::Manager logManager;
     sd_event* sdEvent;
+    TestLogger logger;
 };
 
 fs::path makeTempDir()
@@ -67,11 +84,6 @@
     return std::nullopt;
 }
 
-void eventLoggerStub(const std::string&, phosphor::logging::Entry::Level,
-                     const EventLogger::ADMap&)
-{
-}
-
 // Test that using the RAWPEL=<file> with the Manager::create() call gets
 // a PEL saved in the repository.
 TEST_F(ManagerTest, TestCreateWithPEL)
@@ -79,8 +91,10 @@
     std::unique_ptr<DataInterfaceBase> dataIface =
         std::make_unique<DataInterface>(bus);
 
-    openpower::pels::Manager manager{logManager, std::move(dataIface),
-                                     eventLoggerStub};
+    openpower::pels::Manager manager{
+        logManager, std::move(dataIface),
+        std::bind(std::mem_fn(&TestLogger::log), &logger, std::placeholders::_1,
+                  std::placeholders::_2, std::placeholders::_3)};
 
     // Create a PEL, write it to a file, and pass that filename into
     // the create function.
@@ -150,8 +164,10 @@
     std::unique_ptr<DataInterfaceBase> dataIface =
         std::make_unique<DataInterface>(logManager.getBus());
 
-    openpower::pels::Manager manager{logManager, std::move(dataIface),
-                                     eventLoggerStub};
+    openpower::pels::Manager manager{
+        logManager, std::move(dataIface),
+        std::bind(std::mem_fn(&TestLogger::log), &logger, std::placeholders::_1,
+                  std::placeholders::_2, std::placeholders::_3)};
 
     std::vector<std::string> additionalData;
     std::vector<std::string> associations;
@@ -195,7 +211,10 @@
     std::unique_ptr<DataInterfaceBase> dataIface =
         std::make_unique<DataInterface>(bus);
 
-    Manager manager{logManager, std::move(dataIface), eventLoggerStub};
+    Manager manager{logManager, std::move(dataIface),
+                    std::bind(std::mem_fn(&TestLogger::log), &logger,
+                              std::placeholders::_1, std::placeholders::_2,
+                              std::placeholders::_3)};
 
     // Create a PEL, write it to a file, and pass that filename into
     // the create function so there's one in the repo.
@@ -248,6 +267,10 @@
 
     fclose(fp);
 
+    // Run the event loop to close the FD
+    sdeventplus::Event e{sdEvent};
+    e.run(std::chrono::milliseconds(1));
+
     EXPECT_THROW(
         manager.getPEL(id + 1),
         sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument);
@@ -261,6 +284,13 @@
 
     // hostReject
     manager.hostReject(id, Manager::RejectionReason::BadPEL);
+
+    // Run the event loop to log the bad PEL event
+    e.run(std::chrono::milliseconds(1));
+
+    EXPECT_EQ(logger.errName, "org.open_power.Logging.Error.SentBadPELToHost");
+    EXPECT_EQ(id, std::stoi(logger.ad["BAD_ID"], nullptr, 16));
+
     manager.hostReject(id, Manager::RejectionReason::HostFull);
 
     EXPECT_THROW(
