diff --git a/src/sel_logger.cpp b/src/sel_logger.cpp
index 5f330e0..7fb19ef 100644
--- a/src/sel_logger.cpp
+++ b/src/sel_logger.cpp
@@ -30,6 +30,17 @@
 #include <iostream>
 #include <sstream>
 
+#ifdef SEL_LOGGER_SEND_TO_LOGGING_SERVICE
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Logging/SEL/error.hpp>
+
+using namespace phosphor::logging;
+using SELCreated =
+    sdbusplus::xyz::openbmc_project::Logging::SEL::Error::Created;
+#endif
+
 struct DBusInternalError final : public sdbusplus::exception_t
 {
     const char* name() const noexcept override
@@ -47,6 +58,7 @@
     };
 };
 
+#ifndef SEL_LOGGER_SEND_TO_LOGGING_SERVICE
 static bool getSELLogFiles(std::vector<std::filesystem::path>& selLogFiles)
 {
     // Loop through the directory looking for ipmi_sel log files
@@ -115,6 +127,7 @@
     }
     return recordId;
 }
+#endif
 
 static void toHexStr(const std::vector<uint8_t>& data, std::string& hexStr)
 {
@@ -141,6 +154,14 @@
     std::string selDataStr;
     toHexStr(selData, selDataStr);
 
+#ifdef SEL_LOGGER_SEND_TO_LOGGING_SERVICE
+    using namespace xyz::openbmc_project::Logging::SEL;
+    report<SELCreated>(
+        Created::RECORD_TYPE(selSystemType), Created::GENERATOR_ID(genId),
+        Created::SENSOR_DATA(selDataStr.c_str()), Created::EVENT_DIR(assert),
+        Created::SENSOR_PATH(path.c_str()));
+    return 0;
+#else
     unsigned int recordId = getNewRecordId();
     sd_journal_send("MESSAGE=%s", message.c_str(), "PRIORITY=%i", selPriority,
                     "MESSAGE_ID=%s", selMessageId, "IPMI_SEL_RECORD_ID=%d",
@@ -150,6 +171,7 @@
                     "IPMI_SEL_EVENT_DIR=%x", assert, "IPMI_SEL_DATA=%s",
                     selDataStr.c_str(), std::forward<T>(metadata)..., NULL);
     return recordId;
+#endif
 }
 
 static uint16_t selAddOemRecord(const std::string& message,
@@ -164,12 +186,21 @@
     std::string selDataStr;
     toHexStr(selData, selDataStr);
 
+#ifdef SEL_LOGGER_SEND_TO_LOGGING_SERVICE
+    using namespace xyz::openbmc_project::Logging::SEL;
+    report<SELCreated>(Created::RECORD_TYPE(recordType),
+                       Created::GENERATOR_ID(0),
+                       Created::SENSOR_DATA(selDataStr.c_str()),
+                       Created::EVENT_DIR(0), Created::SENSOR_PATH(""));
+    return 0;
+#else
     unsigned int recordId = getNewRecordId();
     sd_journal_send("MESSAGE=%s", message.c_str(), "PRIORITY=%i", selPriority,
                     "MESSAGE_ID=%s", selMessageId, "IPMI_SEL_RECORD_ID=%d",
                     recordId, "IPMI_SEL_RECORD_TYPE=%x", recordType,
                     "IPMI_SEL_DATA=%s", selDataStr.c_str(), NULL);
     return recordId;
+#endif
 }
 
 int main(int argc, char* argv[])
