diff --git a/phosphor-regulators/src/journal.hpp b/phosphor-regulators/src/journal.hpp
index 47dc347..4499aa6 100644
--- a/phosphor-regulators/src/journal.hpp
+++ b/phosphor-regulators/src/journal.hpp
@@ -15,6 +15,8 @@
  */
 #pragma once
 
+#include <systemd/sd-journal.h>
+
 #include <phosphor-logging/log.hpp>
 
 #include <string>
@@ -82,6 +84,21 @@
      * @param messages messages to log
      */
     virtual void logInfo(const std::vector<std::string>& messages) = 0;
+
+    /**
+     * Gets the journal messages that have the specified field set to the
+     * specified value.
+     *
+     * @param field journal field to use during search
+     * @param fieldValue expected field value
+     * @param max Maximum number of messages to return.
+     *        Specify 0 to return all matching messages.
+     *
+     * @return matching messages from the journal
+     */
+    virtual std::vector<std::string> getMessages(const std::string& field,
+                                                 const std::string& fieldValue,
+                                                 unsigned int max = 0) = 0;
 };
 
 /**
@@ -100,6 +117,11 @@
     SystemdJournal& operator=(SystemdJournal&&) = delete;
     virtual ~SystemdJournal() = default;
 
+    /** @copydoc Journal::getMessages() */
+    virtual std::vector<std::string> getMessages(const std::string& field,
+                                                 const std::string& fieldValue,
+                                                 unsigned int max) override;
+
     /** @copydoc Journal::logDebug(const std::string&) */
     virtual void logDebug(const std::string& message) override
     {
@@ -147,6 +169,16 @@
             logInfo(message);
         }
     }
+
+  private:
+    /**
+     * Gets the data object associated with a specific field from the
+     * current journal entry and return the data as string.
+     *
+     * @param journal the current journal entry
+     * @param field journal field to use during search
+     */
+    std::string getFieldValue(sd_journal* journal, const char* field) const;
 };
 
 } // namespace phosphor::power::regulators
