1 #include "cetlib/PluginTypeDeducer.h"
2 #include "cetlib/ProvideMakePluginMacros.h"
3 #include "fhiclcpp/ParameterSet.h"
5 #include "cetlib/compiler_macros.h"
6 #include "messagefacility/MessageService/ELdestination.h"
7 #include "messagefacility/Utilities/ELseverityLevel.h"
8 #include "messagefacility/Utilities/exception.h"
10 #define TRACE_NAME "MessageFacility"
12 #if GCC_VERSION >= 701000 || defined(__clang__)
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
19 #if GCC_VERSION >= 701000 || defined(__clang__)
20 #pragma GCC diagnostic pop
24 using mf::ELseverityLevel;
26 using mf::service::ELdestination;
42 fhicl::Atom<size_t>{fhicl::Name{
"lvls"}, fhicl::Comment{
"TRACE level mask for Slow output"}, 0};
45 fhicl::Atom<size_t>{fhicl::Name{
"lvlm"}, fhicl::Comment{
"TRACE level mask for Memory output"}, 0};
62 virtual void fillPrefix(std::ostringstream& o,
const ErrorObj& e)
override;
69 virtual void fillUsrMsg(std::ostringstream& o,
const ErrorObj& e)
override;
74 virtual void fillSuffix(std::ostringstream&,
const ErrorObj&)
override {}
81 virtual void routePayload(
const std::ostringstream& o,
const ErrorObj& e)
override;
94 if (pset().lvls() != 0) {
96 TRACE_CNTL(
"lvlmskS", msk);
98 if (pset().lvlm() != 0) {
100 TRACE_CNTL(
"lvlmskM", msk);
103 TLOG(TLVL_INFO) <<
"ELTRACE MessageLogger destination plugin initialized.";
110 const auto& xid = msg.xid();
112 oss << xid.application() <<
", ";
113 oss << xid.id() <<
": ";
122 std::ostringstream tmposs;
123 ELdestination::fillUsrMsg(tmposs, msg);
126 const std::string& usrMsg = !tmposs.str().compare(0, 1,
"\n") ? tmposs.str().erase(0, 1) : tmposs.str();
135 const auto& xid = msg.xid();
136 auto message = oss.str();
138 auto level = xid.severity().getLevel();
142 case mf::ELseverityLevel::ELsev_success:
143 case mf::ELseverityLevel::ELsev_zeroSeverity:
144 case mf::ELseverityLevel::ELsev_unspecified:
148 case mf::ELseverityLevel::ELsev_info:
152 case mf::ELseverityLevel::ELsev_warning:
156 TRACE(lvlNum, message);
166 #ifndef EXTERN_C_FUNC_DECLARE_START
167 #define EXTERN_C_FUNC_DECLARE_START extern "C" {
170 EXTERN_C_FUNC_DECLARE_START
171 auto makePlugin(
const std::string&,
const fhicl::ParameterSet& pset) {
172 return std::make_unique<mfplugins::ELTRACE>(pset);
176 DEFINE_BASIC_PLUGINTYPE_FUNC(mf::service::ELdestination)
virtual void routePayload(const std::ostringstream &o, const ErrorObj &e) override
Serialize a MessageFacility message to the output.
virtual void fillUsrMsg(std::ostringstream &o, const ErrorObj &e) override
Fill the "User Message" portion of the message.
Message Facility destination which logs messages to a TRACE buffer
fhicl::TableFragment< ELdestination::Config > elDestConfig
ELDestination common parameters.
virtual void fillPrefix(std::ostringstream &o, const ErrorObj &e) override
Fill the "Prefix" portion of the message.
ELTRACE(Parameters const &pset)
ELTRACE Constructor
virtual void fillSuffix(std::ostringstream &, const ErrorObj &) override
Fill the "Suffix" portion of the message (Unused)
Configuration Parameters for ELTRACE.
fhicl::Atom< size_t > lvlm
"lvlm" (Default: 0): TRACE level mask for Memory output
fhicl::Atom< size_t > lvls
"lvls" (Default: 0): TRACE level mask for Slow output
fhicl::WrappedTable< Config > Parameters
Used for ParameterSet validation.