diff --git a/Makefile.am b/Makefile.am
index fe90c2f..dae8b7a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,6 +23,7 @@
 # Application test which runs in obmc env (qemu, real hardware)
 bin_PROGRAMS = logging-test
 logging_test_SOURCES = logging_test.cpp
+logging_test_LDADD = libphosphor_logging.la
 
 sbin_PROGRAMS = phosphor-log-manager
 
diff --git a/logging_test.cpp b/logging_test.cpp
index cb7548a..2260861 100644
--- a/logging_test.cpp
+++ b/logging_test.cpp
@@ -1,5 +1,6 @@
 // A basic unit test that runs on a BMC (qemu or hardware)
 
+#include <getopt.h>
 #include <iostream>
 #include <systemd/sd-journal.h>
 #include <sstream>
@@ -9,6 +10,14 @@
 using namespace phosphor;
 using namespace logging;
 
+const char *usage = "Usage: logging-test [OPTION]          \n\n\
+Options:                                                     \n\
+[NONE]                          Default test case.           \n\
+-h, --help                      Display this usage text.     \n\
+-c, --commit <string>           Commit desired error.      \n\n\
+Valid errors to commit:                                      \n\
+AutoTestSimple\n";
+
 // validate the journal metadata equals the input value
 int validate_journal(const char *i_entry, const char *i_value)
 {
@@ -52,7 +61,7 @@
     return rc;
 }
 
-int main()
+int elog_test()
 {
     // TEST 1 - Basic log
     log<level::DEBUG>("Basic phosphor logging test");
@@ -193,3 +202,60 @@
 
     return 0;
 }
+
+void commitError(const char *text)
+{
+    if (strcmp(text, "AutoTestSimple") == 0)
+    {
+        try
+        {
+            elog<example::xyz::openbmc_project::Example::Elog::
+                Error::AutoTestSimple>(
+                    example::xyz::openbmc_project::Example::Elog::
+                        Error::AutoTestSimple::STRING("FOO"));
+        }
+        catch (elogException<example::xyz::openbmc_project::Example::Elog::
+            Error::AutoTestSimple>& e)
+        {
+            std::cout << "elog exception caught: " << e.what() << std::endl;
+            commit(e.name());
+        }
+    }
+
+    return;
+}
+
+int main(int argc, char *argv[])
+{
+    char arg;
+
+    if (argc == 1)
+        return elog_test();
+
+    static struct option long_options[] =
+    {
+          {"help",    no_argument,       0, 'h'},
+          {"commit",  required_argument, 0, 'c'},
+          {0, 0, 0, 0}
+    };
+    int option_index = 0;
+
+    while((arg=getopt_long(argc,argv,"hc:",long_options,&option_index)) != -1)
+    {
+        switch (arg)
+        {
+            case 'c':
+                commitError(optarg);
+                return 0;
+
+            case 'h':
+            case '?':
+                std::cerr << usage;
+                return 1;
+
+        }
+    }
+
+    return 0;
+
+}
diff --git a/tools/example/xyz/openbmc_project/Example/Elog.errors.yaml b/tools/example/xyz/openbmc_project/Example/Elog.errors.yaml
index 1ec9997..d968823 100644
--- a/tools/example/xyz/openbmc_project/Example/Elog.errors.yaml
+++ b/tools/example/xyz/openbmc_project/Example/Elog.errors.yaml
@@ -3,3 +3,6 @@
 
 - name: TestErrorTwo
   description: This is test error two
+
+- name: AutoTestSimple
+  description: This is a simple test error.
diff --git a/tools/example/xyz/openbmc_project/Example/Elog.metadata.yaml b/tools/example/xyz/openbmc_project/Example/Elog.metadata.yaml
index 5b027e1..77b60f8 100644
--- a/tools/example/xyz/openbmc_project/Example/Elog.metadata.yaml
+++ b/tools/example/xyz/openbmc_project/Example/Elog.metadata.yaml
@@ -19,3 +19,9 @@
           type: uint32
         - str: DEV_NAME=%s
           type: string
+
+- name: AutoTestSimple
+  level: ERR
+  meta:
+    - str: STRING=%s
+      type: string
