xref: /openbmc/phosphor-logging/lib/elog.cpp (revision e0538848)
1*e0538848SWilliam A. Kennington III #include "config.h"
2*e0538848SWilliam A. Kennington III 
3*e0538848SWilliam A. Kennington III #include <phosphor-logging/elog.hpp>
4*e0538848SWilliam A. Kennington III #include <stdexcept>
5*e0538848SWilliam A. Kennington III 
6*e0538848SWilliam A. Kennington III namespace phosphor
7*e0538848SWilliam A. Kennington III {
8*e0538848SWilliam A. Kennington III namespace logging
9*e0538848SWilliam A. Kennington III {
10*e0538848SWilliam A. Kennington III namespace details
11*e0538848SWilliam A. Kennington III {
12*e0538848SWilliam A. Kennington III using namespace sdbusplus::xyz::openbmc_project::Logging::server;
13*e0538848SWilliam A. Kennington III 
14*e0538848SWilliam A. Kennington III auto _prepareMsg(const char* funcName)
15*e0538848SWilliam A. Kennington III {
16*e0538848SWilliam A. Kennington III     using phosphor::logging::log;
17*e0538848SWilliam A. Kennington III     constexpr auto IFACE_INTERNAL(
18*e0538848SWilliam A. Kennington III         "xyz.openbmc_project.Logging.Internal.Manager");
19*e0538848SWilliam A. Kennington III 
20*e0538848SWilliam A. Kennington III     // Transaction id is located at the end of the string separated by a period.
21*e0538848SWilliam A. Kennington III 
22*e0538848SWilliam A. Kennington III     auto b = sdbusplus::bus::new_default();
23*e0538848SWilliam A. Kennington III 
24*e0538848SWilliam A. Kennington III     auto m = b.new_method_call(BUSNAME_LOGGING, OBJ_INTERNAL, IFACE_INTERNAL,
25*e0538848SWilliam A. Kennington III                                funcName);
26*e0538848SWilliam A. Kennington III     return m;
27*e0538848SWilliam A. Kennington III }
28*e0538848SWilliam A. Kennington III 
29*e0538848SWilliam A. Kennington III uint32_t commit(const char* name)
30*e0538848SWilliam A. Kennington III {
31*e0538848SWilliam A. Kennington III     auto msg = _prepareMsg("Commit");
32*e0538848SWilliam A. Kennington III     uint64_t id = sdbusplus::server::transaction::get_id();
33*e0538848SWilliam A. Kennington III     msg.append(id, name);
34*e0538848SWilliam A. Kennington III     auto bus = sdbusplus::bus::new_default();
35*e0538848SWilliam A. Kennington III     auto reply = bus.call(msg);
36*e0538848SWilliam A. Kennington III     uint32_t entryID;
37*e0538848SWilliam A. Kennington III     reply.read(entryID);
38*e0538848SWilliam A. Kennington III     return entryID;
39*e0538848SWilliam A. Kennington III }
40*e0538848SWilliam A. Kennington III 
41*e0538848SWilliam A. Kennington III uint32_t commit(const char* name, Entry::Level level)
42*e0538848SWilliam A. Kennington III {
43*e0538848SWilliam A. Kennington III     auto msg = _prepareMsg("CommitWithLvl");
44*e0538848SWilliam A. Kennington III     uint64_t id = sdbusplus::server::transaction::get_id();
45*e0538848SWilliam A. Kennington III     msg.append(id, name, static_cast<uint32_t>(level));
46*e0538848SWilliam A. Kennington III     auto bus = sdbusplus::bus::new_default();
47*e0538848SWilliam A. Kennington III     auto reply = bus.call(msg);
48*e0538848SWilliam A. Kennington III     uint32_t entryID;
49*e0538848SWilliam A. Kennington III     reply.read(entryID);
50*e0538848SWilliam A. Kennington III     return entryID;
51*e0538848SWilliam A. Kennington III }
52*e0538848SWilliam A. Kennington III } // namespace details
53*e0538848SWilliam A. Kennington III 
54*e0538848SWilliam A. Kennington III uint32_t commit(std::string&& name)
55*e0538848SWilliam A. Kennington III {
56*e0538848SWilliam A. Kennington III     log<level::ERR>("method is deprecated, use commit() with exception type");
57*e0538848SWilliam A. Kennington III     return phosphor::logging::details::commit(name.c_str());
58*e0538848SWilliam A. Kennington III }
59*e0538848SWilliam A. Kennington III 
60*e0538848SWilliam A. Kennington III } // namespace logging
61*e0538848SWilliam A. Kennington III } // namespace phosphor
62