summaryrefslogtreecommitdiffstats
path: root/log_manager.cpp
diff options
context:
space:
mode:
authorAdriana Kobylak <anoo@us.ibm.com>2017-02-16 08:36:55 -0600
committerAdriana Kobylak <anoo@linux.vnet.ibm.com>2017-02-16 15:57:29 -0600
commit1f36a88109ab5a59b84032d9a2cfb8314f4fbea5 (patch)
tree6daabdf7474471d965a22ad0e4c8377ef221edab /log_manager.cpp
parent205b11368d69fce12ed2bf347bf8ae7b5b7dfd3f (diff)
downloadphosphor-logging-1f36a88109ab5a59b84032d9a2cfb8314f4fbea5.tar.gz
phosphor-logging-1f36a88109ab5a59b84032d9a2cfb8314f4fbea5.zip
Add HostEvent support to Commit interface
Temporary support for the HostEvent data that is checked in instead of auto-generated. Change-Id: I34e0c8d91dd51b26efaadbe0cd8be951f0e4bc01 Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Diffstat (limited to 'log_manager.cpp')
-rw-r--r--log_manager.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/log_manager.cpp b/log_manager.cpp
index ef1cae8..e84f27e 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -8,6 +8,7 @@
#include <systemd/sd-bus.h>
#include <systemd/sd-journal.h>
#include "elog-lookup.cpp"
+#include "elog-errors-HostEvent.hpp"
#include "config.h"
#include "elog_entry.hpp"
#include "log.hpp"
@@ -43,6 +44,7 @@ void Manager::commit(uint64_t transactionId, std::string errMsg)
std::string transactionIdStr = std::to_string(transactionId);
std::vector<std::string> metalist = g_errMetaMap[errMsg];
+ std::vector<std::string> metalistHostEvent = g_errMetaMapHostEvent[errMsg];
std::vector<std::string> additionalData;
// Read the journal from the end to get the most recent entry first.
@@ -103,6 +105,26 @@ void Manager::commit(uint64_t transactionId, std::string errMsg)
}
efile << "\t}" << std::endl;
+ // TODO Remove once host event error header file is auto-generated.
+ // Tracking with issue openbmc/phosphor-logging#4
+ for (auto metaVarStrHostEvent : metalistHostEvent)
+ {
+ rc = sd_journal_get_data(j, metaVarStrHostEvent.c_str(),
+ (const void **)&data, &length);
+ if (rc < 0)
+ {
+ // Not found, continue to next metadata variable
+ logging::log<logging::level::INFO>("Failed to find metadata",
+ logging::entry("META_FIELD=%s",
+ metaVarStrHostEvent.c_str()));
+ continue;
+ }
+
+ // Metatdata variable found, write to file
+ additionalData.push_back(std::string(data));
+ efile << "\t\"@" << data << "\"," << std::endl;
+ }
+
// TODO Break only once all metadata fields have been found. Implement
// once this function reads the metadata fields from the header file.
break;
OpenPOWER on IntegriCloud