Error / Event Log Framework

Framework to create an error log entry based on information
from the journal log.
1. elog.yaml - User defined reason codes for error scenarios that
   include description, priority level, and desired metadata fields.
2. elog_parser.py - Parser for the yaml file
3. elog-gen.hpp - Auto-generated file based created by the parser
   that includes the error log structures. Including for now for ref.
4. elog.hpp - Error log template to create (log a journal log
   entry with the predefined error log information).

Usage: elog<RC>(NAME(value), prev_entry<NAME>()...)
  where RC - Reason code, NAME - metadata name
  being logged to a journal entry, prev_entry - A Metadata entry that
  has previously being logged to a journal entry.
Example:
  log<level::DEBUG>(
        msg("Info trace to log filename"),
        entry(file_not_found::file_name::str, my_filename));
  elog<file_not_found>(file_not_found::errnum(2),
        file_not_found::file_path("/tmp/"),
        prev_entry<file_not_found::file_name>());

Change-Id: Ic51cee80b58e341c071c366c5e2146fd6694012c
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
diff --git a/test/logging_test.cpp b/test/logging_test.cpp
new file mode 100644
index 0000000..2b75854
--- /dev/null
+++ b/test/logging_test.cpp
@@ -0,0 +1,46 @@
+#include <iostream>
+#include "elog.hpp"
+#include "log.hpp"
+
+using namespace phosphor;
+using namespace logging;
+
+int main()
+{
+    std::cout << "hello world!\n";
+
+    // Simple elog test
+    const char *test_string = "/tmp/test_string/";
+    elog<file_not_found>(file_not_found::errnum(1),
+                         file_not_found::file_path(test_string),
+                         file_not_found::file_name("elog_test_1.txt"));
+
+    log<level::DEBUG>("Info trace to log file path",
+                      entry(file_not_found::file_path::str,
+                            "/tmp/log_file_test/"));
+
+    // pass parameter and previous_entry
+    elog<file_not_found>(file_not_found::errnum(2),
+                         prev_entry<file_not_found::file_path>(),
+                         file_not_found::file_name("elog_test_2.txt"));
+
+    // Simple test to prove we fail to compile due to missing param
+    //elog<file_not_found>(file_not_found::errnum(1),
+    //                     file_not_found::file_path("test"));
+
+    // Simple test to prove we fail to compile due to invalid param
+    //elog<file_not_found>(file_not_found::errnum(1),
+    //                     file_not_found::file_path("test"),
+    //                     file_not_found::file_name(1));
+
+    // Log tests
+    log<level::DEBUG>("Simple Example");
+
+    const char *file_name = "HELLO.txt";
+    int number = 0xFEFE;
+
+    log<level::DEBUG>("THIS IS A PHOSPHOR LOGGING TEST",
+            entry("FILE_NAME=%s_%x", file_name, number));
+
+    return 0;
+}