PLDM: Implementing Phosphor-Logging/LG2 logging

This commit adds changes in PLDM for implementing
structured LG2 logging, thereby moving away from
std::cout/cerr practice of logging which are
output streams and not logging mechanism.

PLDM now can make use of lg2 features like accurate
CODE LINE Number and CODE_FUNCTION Name and better
detailing in json object values which can be used in
log tracking.

More detailed logging change:
https://gist.github.com/riyadixitagra/c251685c1ba84248181891f7bc282395

Tested:
Ran a power off, on, cycle, and reset-reload.

Change-Id: I0485035f15f278c3fd172f0581b053c1c37f3a5b
Signed-off-by: Riya Dixit <riyadixitagra@gmail.com>
diff --git a/softoff/main.cpp b/softoff/main.cpp
index 4ff2a4d..ff6252d 100644
--- a/softoff/main.cpp
+++ b/softoff/main.cpp
@@ -1,8 +1,12 @@
 #include "common/utils.hpp"
 #include "softoff.hpp"
 
+#include <phosphor-logging/lg2.hpp>
+
 #include <iostream>
 
+PHOSPHOR_LOG2_USING;
+
 int main()
 {
     // Get a default event loop
@@ -18,15 +22,15 @@
 
     if (softPower.isError())
     {
-        std::cerr << "Host failed to gracefully shutdown, exiting "
-                     "pldm-softpoweroff app\n";
+        error(
+            "Host failed to gracefully shutdown, exiting pldm-softpoweroff app");
         return -1;
     }
 
     if (softPower.isCompleted())
     {
-        std::cerr << "Host current state is not Running, exiting "
-                     "pldm-softpoweroff app\n";
+        error(
+            "Host current state is not Running, exiting pldm-softpoweroff app");
         return 0;
     }
 
@@ -34,9 +38,8 @@
     // wait the host gracefully shutdown.
     if (softPower.hostSoftOff(event))
     {
-        std::cerr << "pldm-softpoweroff:Failure in sending soft off request to "
-                     "the host. Exiting pldm-softpoweroff app\n";
-
+        error(
+            "pldm-softpoweroff:Failure in sending soft off request to the host. Exiting pldm-softpoweroff app");
         return -1;
     }
 
@@ -44,10 +47,8 @@
     {
         pldm::utils::reportError(
             "pldm soft off: Waiting for the host soft off timeout");
-        std::cerr
-            << "PLDM host soft off: ERROR! Wait for the host soft off timeout."
-            << "Exit the pldm-softpoweroff "
-            << "\n";
+        error(
+            "PLDM host soft off: ERROR! Wait for the host soft off timeout. Exit the pldm-softpoweroff");
         return -1;
     }
 
diff --git a/softoff/meson.build b/softoff/meson.build
index a02a306..fb46280 100644
--- a/softoff/meson.build
+++ b/softoff/meson.build
@@ -5,6 +5,7 @@
     sdeventplus,
     sdbusplus,
     phosphor_dbus_interfaces,
+    phosphor_logging_dep,
     ]
 
 source = ['main.cpp','softoff.cpp']
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index 781ea46..7d83cb6 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -9,6 +9,7 @@
 #include <libpldm/pldm.h>
 #include <libpldm/state_set.h>
 
+#include <phosphor-logging/lg2.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdeventplus/clock.hpp>
 #include <sdeventplus/exception.hpp>
@@ -18,9 +19,10 @@
 #include <array>
 #include <iostream>
 
+PHOSPHOR_LOG2_USING;
+
 namespace pldm
 {
-
 using namespace sdeventplus;
 using namespace sdeventplus::source;
 constexpr auto clockId = sdeventplus::ClockId::RealTime;
@@ -42,8 +44,7 @@
     auto rc = getEffecterID();
     if (completed)
     {
-        std::cerr
-            << "pldm-softpoweroff: effecter to initiate softoff not found \n";
+        error("pldm-softpoweroff: effecter to initiate softoff not found");
         return;
     }
     else if (rc != PLDM_SUCCESS)
@@ -55,8 +56,8 @@
     rc = getSensorInfo();
     if (rc != PLDM_SUCCESS)
     {
-        std::cerr << "Message get Sensor PDRs error. PLDM error code = "
-                  << std::hex << std::showbase << rc << "\n";
+        error("Message get Sensor PDRs error. PLDM error code = {RC}", "RC",
+              lg2::hex, static_cast<int>(rc));
         hasError = true;
         return;
     }
@@ -92,7 +93,7 @@
     }
     catch (const std::exception& e)
     {
-        std::cerr << "PLDM host soft off: Can't get current host state.\n";
+        error("PLDM host soft off: Can't get current host state.");
         hasError = true;
         return PLDM_ERROR;
     }
@@ -119,8 +120,8 @@
         auto rc = timer.stop();
         if (rc < 0)
         {
-            std::cerr << "PLDM soft off: Failure to STOP the timer. ERRNO="
-                      << rc << "\n";
+            error("PLDM soft off: Failure to STOP the timer. ERRNO={RC}", "RC",
+                  rc);
         }
 
         // This marks the completion of pldm soft power off.
@@ -163,8 +164,8 @@
     }
     catch (const sdbusplus::exception_t& e)
     {
-        std::cerr << "PLDM soft off: Error get VMM PDR,ERROR=" << e.what()
-                  << "\n";
+        error("PLDM soft off: Error get VMM PDR,ERROR={ERR_EXCEP}", "ERR_EXCEP",
+              e.what());
         VMMPdrExist = false;
     }
 
@@ -192,9 +193,7 @@
 
         if (sysFwResponse.size() == 0)
         {
-            std::cerr
-                << "No effecter ID has been found that matches the criteria"
-                << "\n";
+            error("No effecter ID has been found that matches the criteria");
             return PLDM_ERROR;
         }
 
@@ -207,8 +206,8 @@
     }
     catch (const sdbusplus::exception_t& e)
     {
-        std::cerr << "PLDM soft off: Error get system firmware PDR,ERROR="
-                  << e.what() << "\n";
+        error("PLDM soft off: Error get system firmware PDR,ERROR={ERR_EXCEP}",
+              "ERR_EXCEP", e.what());
         completed = true;
         return PLDM_ERROR;
     }
@@ -243,9 +242,7 @@
 
         if (Response.size() == 0)
         {
-            std::cerr
-                << "No sensor PDR has been found that matches the criteria"
-                << "\n";
+            error("No sensor PDR has been found that matches the criteria");
             return PLDM_ERROR;
         }
 
@@ -255,7 +252,7 @@
             pdr = reinterpret_cast<pldm_state_sensor_pdr*>(rep.data());
             if (!pdr)
             {
-                std::cerr << "Failed to get state sensor PDR.\n";
+                error("Failed to get state sensor PDR.");
                 return PLDM_ERROR;
             }
         }
@@ -284,8 +281,8 @@
     }
     catch (const sdbusplus::exception_t& e)
     {
-        std::cerr << "PLDM soft off: Error get State Sensor PDR,ERROR="
-                  << e.what() << "\n";
+        error("PLDM soft off: Error get State Sensor PDR,ERROR={ERR_EXCEP}",
+              "ERR_EXCEP", e.what());
         return PLDM_ERROR;
     }
 
@@ -315,8 +312,8 @@
     }
     catch (const sdbusplus::exception_t& e)
     {
-        std::cerr << "PLDM soft off: Error get instanceID,ERROR=" << e.what()
-                  << "\n";
+        error("PLDM soft off: Error get instanceID,ERROR={ERR_EXCEP}",
+              "ERR_EXCEP", e.what());
         return PLDM_ERROR;
     }
 
@@ -331,8 +328,8 @@
         instanceID, effecterID, effecterCount, &stateField, request);
     if (rc != PLDM_SUCCESS)
     {
-        std::cerr << "Message encode failure. PLDM error code = " << std::hex
-                  << std::showbase << rc << "\n";
+        error("Message encode failure. PLDM error code = {RC}", "RC", lg2::hex,
+              static_cast<int>(rc));
         return PLDM_ERROR;
     }
 
@@ -340,8 +337,7 @@
     int fd = pldm_open();
     if (-1 == fd)
     {
-        std::cerr << "Failed to connect to mctp demux daemon"
-                  << "\n";
+        error("Failed to connect to mctp demux daemon");
         return PLDM_ERROR;
     }
 
@@ -350,9 +346,8 @@
                                    Timer::TimePoint /*time*/) {
         if (!responseReceived)
         {
-            std::cerr
-                << "PLDM soft off: ERROR! Can't get the response for the PLDM request msg. Time out!\n"
-                << "Exit the pldm-softpoweroff\n";
+            error(
+                "PLDM soft off: ERROR! Can't get the response for the PLDM request msg. Time out! Exit the pldm-softpoweroff");
             exit(-1);
         }
         return;
@@ -374,8 +369,8 @@
                             &responseMsgSize);
         if (rc)
         {
-            std::cerr << "Soft off: failed to recv pldm data. PLDM RC = " << rc
-                      << "\n";
+            error("Soft off: failed to recv pldm data. PLDM RC = {RC}", "RC",
+                  static_cast<int>(rc));
             return;
         }
 
@@ -388,8 +383,8 @@
         auto response = reinterpret_cast<pldm_msg*>(responseMsgPtr.get());
         if (response->payload[0] != PLDM_SUCCESS)
         {
-            std::cerr << "Getting the wrong response. PLDM RC = "
-                      << (unsigned)response->payload[0] << "\n";
+            error("Getting the wrong response. PLDM RC = {RC}", "RC",
+                  (unsigned)response->payload[0]);
             exit(-1);
         }
 
@@ -403,15 +398,16 @@
         auto ret = startTimer(timeMicroseconds);
         if (ret < 0)
         {
-            std::cerr << "Failure to start Host soft off wait timer, ERRNO = "
-                      << ret << "Exit the pldm-softpoweroff\n";
+            error(
+                "Failure to start Host soft off wait timer, ERRNO = {RET}. Exit the pldm-softpoweroff",
+                "RET", ret);
             exit(-1);
         }
         else
         {
-            std::cerr
-                << "Timer started waiting for host soft off, TIMEOUT_IN_SEC = "
-                << SOFTOFF_TIMEOUT_SECONDS << "\n";
+            error(
+                "Timer started waiting for host soft off, TIMEOUT_IN_SEC = {TIMEOUT_SEC}",
+                "TIMEOUT_SEC", SOFTOFF_TIMEOUT_SECONDS);
         }
         return;
     };
@@ -421,8 +417,9 @@
     rc = pldm_send(mctpEID, fd, requestMsg.data(), requestMsg.size());
     if (0 > rc)
     {
-        std::cerr << "Failed to send message/receive response. RC = " << rc
-                  << ", errno = " << errno << "\n";
+        error(
+            "Failed to send message/receive response. RC = {RC}, errno = {ERR}",
+            "RC", static_cast<int>(rc), "ERR", errno);
         return PLDM_ERROR;
     }
 
@@ -435,9 +432,9 @@
         }
         catch (const sdeventplus::SdEventError& e)
         {
-            std::cerr
-                << "PLDM host soft off: Failure in processing request.ERROR= "
-                << e.what() << "\n";
+            error(
+                "PLDM host soft off: Failure in processing request.ERROR= {ERR_EXCEP}",
+                "ERR_EXCEP", e.what());
             return PLDM_ERROR;
         }
     }