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/host-bmc/host_pdr_handler.cpp b/host-bmc/host_pdr_handler.cpp
index 08b78ad..cedebb0 100644
--- a/host-bmc/host_pdr_handler.cpp
+++ b/host-bmc/host_pdr_handler.cpp
@@ -6,6 +6,7 @@
#include <libpldm/pldm.h>
#include <nlohmann/json.hpp>
+#include <phosphor-logging/lg2.hpp>
#include <sdeventplus/clock.hpp>
#include <sdeventplus/exception.hpp>
#include <sdeventplus/source/io.hpp>
@@ -13,6 +14,8 @@
#include <fstream>
+PHOSPHOR_LOG2_USING;
+
namespace pldm
{
using namespace pldm::dbus_api;
@@ -65,7 +68,7 @@
auto data = Json::parse(jsonFile, nullptr, false);
if (data.is_discarded())
{
- std::cerr << "Parsing Host FRU json file failed" << std::endl;
+ error("Parsing Host FRU json file failed");
}
else
{
@@ -83,8 +86,8 @@
}
catch (const std::exception& e)
{
- std::cerr << "Parsing Host FRU json file failed, exception = "
- << e.what() << std::endl;
+ error("Parsing Host FRU json file failed, exception = {ERR_EXCEP}",
+ "ERR_EXCEP", e.what());
}
}
@@ -177,7 +180,7 @@
if (rc != PLDM_SUCCESS)
{
requester.markFree(mctp_eid, instanceId);
- std::cerr << "Failed to encode_get_pdr_req, rc = " << rc << std::endl;
+ error("Failed to encode_get_pdr_req, rc = {RC}", "RC", rc);
return;
}
@@ -187,7 +190,7 @@
std::move(std::bind_front(&HostPDRHandler::processHostPDRs, this)));
if (rc)
{
- std::cerr << "Failed to send the GetPDR request to Host \n";
+ error("Failed to send the GetPDR request to Host");
}
}
@@ -197,8 +200,7 @@
auto rc = stateSensorHandler.eventAction(entry, state);
if (rc != PLDM_SUCCESS)
{
- std::cerr << "Failed to fetch and update D-bus property, rc = " << rc
- << std::endl;
+ error("Failed to fetch and update D-bus property, rc = {RC}", "RC", rc);
return rc;
}
return PLDM_SUCCESS;
@@ -249,8 +251,7 @@
pldm_find_entity_ref_in_tree(entityTree, entities[0], &node);
if (node == nullptr)
{
- std::cerr
- << "\ncould not find referrence of the entity in the tree \n";
+ error("could not find referrence of the entity in the tree");
}
else
{
@@ -308,9 +309,8 @@
&firstEntry, eventData, &actualSize, maxSize);
if (rc != PLDM_SUCCESS)
{
- std::cerr
- << "Failed to encode_pldm_pdr_repository_chg_event_data, rc = "
- << rc << std::endl;
+ error("Failed to encode_pldm_pdr_repository_chg_event_data, rc = {RC}",
+ "RC", rc);
return;
}
auto instanceId = requester.getInstanceId(mctp_eid);
@@ -325,8 +325,8 @@
if (rc != PLDM_SUCCESS)
{
requester.markFree(mctp_eid, instanceId);
- std::cerr << "Failed to encode_platform_event_message_req, rc = " << rc
- << std::endl;
+ error("Failed to encode_platform_event_message_req, rc = {RC}", "RC",
+ rc);
return;
}
@@ -335,9 +335,8 @@
size_t respMsgLen) {
if (response == nullptr || !respMsgLen)
{
- std::cerr << "Failed to receive response for the PDR repository "
- "changed event"
- << "\n";
+ error(
+ "Failed to receive response for the PDR repository changed event");
return;
}
@@ -348,10 +347,9 @@
&completionCode, &status);
if (rc || completionCode)
{
- std::cerr << "Failed to decode_platform_event_message_resp: "
- << "rc=" << rc
- << ", cc=" << static_cast<unsigned>(completionCode)
- << std::endl;
+ error(
+ "Failed to decode_platform_event_message_resp: {RC}, cc = {CC}",
+ "RC", rc, "CC", static_cast<unsigned>(completionCode));
}
};
@@ -360,8 +358,7 @@
std::move(requestMsg), std::move(platformEventMessageResponseHandler));
if (rc)
{
- std::cerr << "Failed to send the PDR repository changed event request"
- << "\n";
+ error("Failed to send the PDR repository changed event request");
}
}
@@ -408,8 +405,7 @@
uint8_t transferCRC{};
if (response == nullptr || !respMsgLen)
{
- std::cerr << "Failed to receive response for the GetPDR"
- " command \n";
+ error("Failed to receive response for the GetPDR command");
return;
}
@@ -422,7 +418,7 @@
memcpy(responsePDRMsg.data(), response, respMsgLen + sizeof(pldm_msg_hdr));
if (rc != PLDM_SUCCESS)
{
- std::cerr << "Failed to decode_get_pdr_resp, rc = " << rc << std::endl;
+ error("Failed to decode_get_pdr_resp, rc = {RC}", "RC", rc);
return;
}
else
@@ -434,10 +430,8 @@
respCount, &transferCRC);
if (rc != PLDM_SUCCESS || completionCode != PLDM_SUCCESS)
{
- std::cerr << "Failed to decode_get_pdr_resp: "
- << "rc=" << rc
- << ", cc=" << static_cast<unsigned>(completionCode)
- << std::endl;
+ error("Failed to decode_get_pdr_resp: rc = {RC}, cc = {CC}", "RC",
+ rc, "CC", static_cast<unsigned>(completionCode));
return;
}
else
@@ -615,8 +609,8 @@
PLDM_BASE, request);
if (rc != PLDM_SUCCESS)
{
- std::cerr << "GetPLDMVersion encode failure. PLDM error code = "
- << std::hex << std::showbase << rc << "\n";
+ error("GetPLDMVersion encode failure. PLDM error code = {RC}", "RC",
+ lg2::hex, rc);
requester.markFree(mctp_eid, instanceId);
return;
}
@@ -626,13 +620,12 @@
size_t respMsgLen) {
if (response == nullptr || !respMsgLen)
{
- std::cerr << "Failed to receive response for "
- << "getPLDMVersion command, Host seems to be off \n";
+ error(
+ "Failed to receive response for getPLDMVersion command, Host seems to be off");
return;
}
- std::cout << "Getting the response. PLDM RC = " << std::hex
- << std::showbase
- << static_cast<uint16_t>(response->payload[0]) << "\n";
+ info("Getting the response. PLDM RC = {RC}", "RC", lg2::hex,
+ static_cast<uint16_t>(response->payload[0]));
this->responseReceived = true;
getHostPDR();
};
@@ -641,7 +634,7 @@
std::move(getPLDMVersionHandler));
if (rc)
{
- std::cerr << "Failed to discover Host state. Assuming Host as off \n";
+ error("Failed to discover Host state. Assuming Host as off");
}
}
@@ -659,7 +652,7 @@
if (!pdr)
{
- std::cerr << "Failed to get State sensor PDR" << std::endl;
+ error("Failed to get State sensor PDR");
pldm::utils::reportError(
"xyz.openbmc_project.bmc.pldm.InternalFailure");
return;
@@ -691,9 +684,9 @@
if (rc != PLDM_SUCCESS)
{
requester.markFree(mctp_eid, instanceId);
- std::cerr << "Failed to "
- "encode_get_state_sensor_readings_req, rc = "
- << rc << std::endl;
+ error(
+ "Failed to encode_get_state_sensor_readings_req, rc = {RC}",
+ "RC", rc);
pldm::utils::reportError(
"xyz.openbmc_project.bmc.pldm.InternalFailure");
return;
@@ -706,8 +699,8 @@
size_t respMsgLen) {
if (response == nullptr || !respMsgLen)
{
- std::cerr << "Failed to receive response for "
- "getStateSensorReading command \n";
+ error(
+ "Failed to receive response for getStateSensorReading command");
return;
}
std::array<get_sensor_state_field, 8> stateField{};
@@ -720,12 +713,10 @@
if (rc != PLDM_SUCCESS || completionCode != PLDM_SUCCESS)
{
- std::cerr
- << "Failed to "
- "decode_get_state_sensor_readings_resp, rc = "
- << rc
- << " cc=" << static_cast<unsigned>(completionCode)
- << std::endl;
+ error(
+ "Failed to decode_get_state_sensor_readings_resp, rc = {RC} cc = {CC}",
+ "RC", rc, "CC",
+ static_cast<unsigned>(completionCode));
pldm::utils::reportError(
"xyz.openbmc_project.bmc.pldm.InternalFailure");
}
@@ -765,16 +756,13 @@
}
catch (const std::out_of_range& e)
{
- std::cerr << "No mapping for the events"
- << std::endl;
+ error("No mapping for the events");
}
}
if (sensorOffset > compositeSensorStates.size())
{
- std::cerr
- << " Error Invalid data, Invalid sensor offset"
- << std::endl;
+ error("Error Invalid data, Invalid sensor offset");
return;
}
@@ -783,9 +771,7 @@
if (possibleStates.find(eventState) ==
possibleStates.end())
{
- std::cerr
- << " Error invalid_data, Invalid event state"
- << std::endl;
+ error("Error invalid_data, Invalid event state");
return;
}
const auto& [containerId, entityType, entityInstance] =
@@ -804,9 +790,8 @@
if (rc != PLDM_SUCCESS)
{
- std::cerr << " Failed to send request to get State sensor "
- "reading on Host "
- << std::endl;
+ error(
+ "Failed to send request to get State sensor reading on Host");
}
}
}