|
ATLAS Offline Software
|
MessageSvc used by the HLT applications.
More...
#include <TrigMessageSvc.h>
|
struct | MsgAry |
| Private helper class to keep the count of messages of a type (MSG::LEVEL). More...
|
|
|
typedef std::map< std::string, int, std::less<> > | ThresholdMap |
|
|
| TrigMessageSvc (const std::string &name, ISvcLocator *svcloc) |
|
virtual StatusCode | reinitialize () override |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | start () override |
|
virtual StatusCode | stop () override |
|
virtual StatusCode | finalize () override |
|
virtual void | handle (const Incident &incident) override |
|
virtual void | reportMessage (const Message &message) override |
|
virtual void | reportMessage (const Message &msg, int outputLevel) override |
|
virtual void | reportMessage (std::string source, int type, std::string message) override |
|
virtual std::ostream *defaultStream | ATLAS_NOT_CONST_THREAD_SAFE () const override |
|
virtual void | setDefaultStream (std::ostream *stream) override |
|
virtual int | outputLevel () const override |
|
virtual int | outputLevel (std::string_view source) const override |
|
virtual void | setOutputLevel (int new_level) override |
|
virtual void | setOutputLevel (std::string_view source, int new_level) override |
|
virtual int | messageCount (MSG::Level logLevel) const override |
|
virtual bool | useColor () const override |
|
virtual std::string | getLogColor (int) const override |
|
|
virtual void | reportMessage (const StatusCode &, std::string_view) override |
| Not supported by this implementation. More...
|
|
virtual void | insertMessage (const StatusCode &, Message) override |
|
virtual void | eraseMessage () override |
|
virtual void | eraseMessage (const StatusCode &) override |
|
virtual void | eraseMessage (const StatusCode &, const Message &) override |
|
virtual void | insertStream (int, std::string, std::ostream *) override |
|
virtual void | eraseStream () override |
|
virtual void | eraseStream (int) override |
|
virtual void | eraseStream (int, std::ostream *) override |
|
virtual void | eraseStream (std::ostream *) override |
|
|
Gaudi::Property< std::string > | m_defaultFormat |
|
Gaudi::Property< std::string > | m_ersFormat |
|
Gaudi::Property< std::string > | m_defaultTimeFormat |
|
Gaudi::Property< bool > | m_stats {this, "showStats", false, "Show message statistics"} |
|
Gaudi::Property< unsigned int > | m_statLevel |
|
Gaudi::Property< unsigned int > | m_publishLevel |
|
Gaudi::Property< unsigned int > | m_eventIDLevel |
|
Gaudi::Property< bool > | m_color |
|
Gaudi::Property< bool > | m_suppress {this, "enableSuppression", false, "Enable message suppression"} |
|
Gaudi::Property< bool > | m_suppressRunningOnly |
|
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > | m_thresholdProp |
|
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > | m_msgLimit |
|
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > | m_useERS |
| Special properties to control output to ERS of individual sources. More...
|
|
Gaudi::Property< int > | m_ersEventLimit |
|
std::ostream * | m_defaultStream = &std::cout |
| Pointer to the output stream. More...
|
|
ThresholdMap | m_thresholdMap |
| Output level threshold map. More...
|
|
std::map< std::string, MsgAry > | m_sourceMap |
| counts per source More...
|
|
std::array< int, MSG::NUM_LEVELS > | m_msgCount {} |
| counts per level More...
|
|
std::map< size_t, unsigned int > | m_msgHashCount |
| counts per message hash More...
|
|
std::unordered_map< EventContext::ContextID_t, std::pair< EventContext::ContextEvt_t, MsgAry > > | m_slotMsgCount |
| counts per slot and level More...
|
|
bool | m_doPublish {false} |
| are we publishing message statistics? More...
|
|
bool | m_doSuppress {false} |
| is suppression currently enabled? More...
|
|
TH1I * | m_msgCountHist {nullptr} |
| Message counting per level histogram. More...
|
|
TH2I * | m_msgCountSrcHist {nullptr} |
| Message counting per message source. More...
|
|
std::recursive_mutex | m_thresholdMapMutex |
|
bool | m_asyncReporting {false} |
| ( More...
|
|
std::thread | m_thread |
| Thread for asynchronous reporting. More...
|
|
tbb::concurrent_bounded_queue< std::function< void()> > | m_messageActionsQueue |
|
MessageSvc used by the HLT applications.
This MessageSvc implementation it used by the HLT applications. It has some additional features compared to the default Gaudi MessageSvc. Most notably the forwarding of messages to the TDAQ ERS message system.
The message suppression is configured with the following parameters:
- Parameters
-
<level>Limit | = 0: no message suppression for <level> |
<level>Limit | = N > 0: suppress messages after N messages (per source) |
<level>Limit | = -N < 0: use logarithmic suppression after N messages (per message) |
Note, that the logarithmic suppression works on a per-message basis (ignoring any digits in the message).
- Author
- Iain Last, Werner Wiedenmann, Frank Winklmeier
Definition at line 56 of file TrigMessageSvc.h.
◆ ThresholdMap
◆ TrigMessageSvc()
TrigMessageSvc::TrigMessageSvc |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
svcloc |
|
) |
| |
Definition at line 38 of file TrigMessageSvc.cxx.
39 base_class(
name, svcloc)
41 m_outputLevel.declareUpdateHandler([svcloc](Gaudi::Details::PropertyBase&) {
42 SmartIF<IAppMgrUI> app = svcloc;
43 if (app) app->outputLevelUpdate();
◆ asyncReporting()
void TrigMessageSvc::asyncReporting |
( |
| ) |
|
|
private |
◆ ATLAS_NOT_CONST_THREAD_SAFE()
virtual std::ostream* defaultStream TrigMessageSvc::ATLAS_NOT_CONST_THREAD_SAFE |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ bookHistograms()
void TrigMessageSvc::bookHistograms |
( |
| ) |
|
|
private |
Definition at line 114 of file TrigMessageSvc.cxx.
117 if (
histSvc.retrieve().isFailure() ) {
118 reportMessage(
name(), MSG::WARNING,
"Cannot find THistSvc. Message stats will not be published.");
124 const std::string
path =
"/EXPERT/HLTFramework/" +
name() +
"/";
126 m_msgCountHist =
new TH1I(
"MessageCount",
"Messages while RUNNING;Severity;Count",
127 nLevelBins, 0, nLevelBins);
129 const int nSrcBins = 1;
130 m_msgCountSrcHist =
new TH2I(
"MessageCountBySource",
"Messages while RUNNING;Severity;Source",
131 nLevelBins, 0, nLevelBins, nSrcBins, 0, nSrcBins);
139 reportMessage(
name(), MSG::WARNING,
"Cannot register monitoring histogram 'MessageCount'");
142 reportMessage(
name(), MSG::WARNING,
"Cannot register monitoring histogram 'MessageCountBySource'");
◆ eraseMessage() [1/3]
virtual void TrigMessageSvc::eraseMessage |
( |
| ) |
|
|
inlineoverridevirtual |
◆ eraseMessage() [2/3]
virtual void TrigMessageSvc::eraseMessage |
( |
const StatusCode & |
| ) |
|
|
inlineoverridevirtual |
◆ eraseMessage() [3/3]
virtual void TrigMessageSvc::eraseMessage |
( |
const StatusCode & |
, |
|
|
const Message & |
|
|
) |
| |
|
inlineoverridevirtual |
◆ eraseStream() [1/4]
virtual void TrigMessageSvc::eraseStream |
( |
| ) |
|
|
inlineoverridevirtual |
◆ eraseStream() [2/4]
virtual void TrigMessageSvc::eraseStream |
( |
int |
| ) |
|
|
inlineoverridevirtual |
◆ eraseStream() [3/4]
virtual void TrigMessageSvc::eraseStream |
( |
int |
, |
|
|
std::ostream * |
|
|
) |
| |
|
inlineoverridevirtual |
◆ eraseStream() [4/4]
virtual void TrigMessageSvc::eraseStream |
( |
std::ostream * |
| ) |
|
|
inlineoverridevirtual |
◆ finalize()
StatusCode TrigMessageSvc::finalize |
( |
| ) |
|
|
overridevirtual |
Definition at line 207 of file TrigMessageSvc.cxx.
210 std::ostringstream
os;
213 os <<
"Summarizing all message counts"
214 <<
" (severity >= " << levelNames[
m_statLevel] <<
")" << std::endl;
217 os <<
"Listing sources of suppressed message: " << std::endl;
220 os <<
"=====================================================" << std::endl;
221 os <<
" Message Source | Level | Count" << std::endl;
222 os <<
"-----------------------------+---------+-------------" << std::endl;
232 os.setf(std::ios_base::left, std::ios_base::adjustfield);
237 os.setf(std::ios_base::right, std::ios_base::adjustfield);
238 os << levelNames[
ic];
242 os << itr->second.msg[
ic];
249 os <<
"=====================================================" << std::endl;
254 return StatusCode::SUCCESS;
◆ getLogColor()
virtual std::string TrigMessageSvc::getLogColor |
( |
int |
| ) |
const |
|
inlineoverridevirtual |
◆ handle()
void TrigMessageSvc::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
◆ i_reportERS()
void TrigMessageSvc::i_reportERS |
( |
const Message & |
msg | ) |
const |
|
private |
Report message to online messaging system (ERS)
Definition at line 375 of file TrigMessageSvc.cxx.
386 const char* function_name =
"";
387 const int line_number = msgHash(
msg);
388 const char* package_name =
"HLT";
389 ers::LocalContext hlt_context_info(package_name,
filename, line_number, function_name);
399 std::ostringstream oss;
401 ers::HLTMessage ersMsg(hlt_context_info, oss.str());
402 ersMsg.add_qualifier(
"HLT");
405 switch (
msg.getType()) {
409 case MSG::INFO:
ers::info(ersMsg);
break;
410 case MSG::WARNING: ers::warning(ersMsg);
break;
414 std::ostringstream oss;
415 oss <<
"Unknown message severity level: " <<
msg.getType() <<
" Original message was: " <<
m;
416 ers::error(ers::HLTMessage(ERS_HERE, oss.str()));
◆ i_reportMessage()
void TrigMessageSvc::i_reportMessage |
( |
const Message & |
msg, |
|
|
int |
outputLevel |
|
) |
| |
|
private |
Internal implementation of reportMessage(const Message&,int) without lock.
Definition at line 283 of file TrigMessageSvc.cxx.
285 const int key =
msg.getType();
290 std::unique_ptr<Message> newMessage;
301 if (nmsg > msgLimit) doPrint =
false;
302 if (nmsg == msgLimit) {
303 std::string txt = levelNames[
key] +
" message limit (" +
std::to_string(msgLimit) +
304 ") reached for " +
msg.getSource() +
". Suppressing further output.";
305 newMessage = std::make_unique<Message>(
msg.getSource(), MSG::WARNING, std::move(txt));
306 cmsg = newMessage.get();
310 else if (msgLimit < 0) {
312 const unsigned int mh = msgHash(*cmsg);
321 if (nmsg == abs(msgLimit)) {
322 std::ostringstream
os;
323 os <<
msg.getMessage() <<
" [Message limit (" << abs(msgLimit)
324 <<
") reached. Log-suppression of further output.]";
325 newMessage = std::make_unique<Message>(
msg.getSource(),
msg.getType(),
os.str());
326 cmsg = newMessage.get();
328 else if (nmsg > abs(msgLimit)) {
329 const int everyNth = (
int)exp10((
int)log10(nmsg));
330 if ((nmsg % everyNth) == 0) {
331 std::ostringstream
os;
332 os <<
msg.getMessage() <<
" [suppressed " << everyNth <<
" similar messages]";
333 newMessage = std::make_unique<Message>(
msg.getSource(),
msg.getType(),
os.str());
334 cmsg = newMessage.get();
349 (*m_defaultStream) << *cmsg << std::endl <<
std::flush;
◆ initialize()
StatusCode TrigMessageSvc::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 54 of file TrigMessageSvc.cxx.
57 if (
sc.isFailure())
return sc;
60 sc = incSvc.retrieve();
71 std::cout <<
"TrigMessageSvc WARNING: Colors are not supported by TrigMessageSvc" << std::endl;
73 return StatusCode::SUCCESS;
◆ insertMessage()
virtual void TrigMessageSvc::insertMessage |
( |
const StatusCode & |
, |
|
|
Message |
|
|
) |
| |
|
inlineoverridevirtual |
◆ insertStream()
virtual void TrigMessageSvc::insertStream |
( |
int |
, |
|
|
std::string |
, |
|
|
std::ostream * |
|
|
) |
| |
|
inlineoverridevirtual |
◆ messageCount()
int TrigMessageSvc::messageCount |
( |
MSG::Level |
logLevel | ) |
const |
|
overridevirtual |
◆ outputLevel() [1/2]
int TrigMessageSvc::outputLevel |
( |
| ) |
const |
|
overridevirtual |
◆ outputLevel() [2/2]
int TrigMessageSvc::outputLevel |
( |
std::string_view |
source | ) |
const |
|
overridevirtual |
◆ passErsFilter()
bool TrigMessageSvc::passErsFilter |
( |
const std::string & |
source, |
|
|
const std::vector< std::string > & |
filter |
|
) |
| const |
|
private |
Definition at line 465 of file TrigMessageSvc.cxx.
468 if (
filter.empty())
return false;
470 if (
filter.size() == 1 && (*
it) ==
"*")
return true;
474 if ((*
it) ==
"*") pass =
true;
476 if (
"!" +
source == (*
it))
return false;
◆ passErsLimit()
bool TrigMessageSvc::passErsLimit |
( |
const Message & |
msg | ) |
|
|
private |
Definition at line 481 of file TrigMessageSvc.cxx.
485 const EventContext::ContextID_t slot =
msg.getEventSlot();
486 const EventContext::ContextEvt_t
evt =
msg.getEventNumber();
491 if ( itr->second.first !=
evt ) {
492 itr->second = {
evt, MsgAry()};
496 const int N = ++itr->second.second.msg[
msg.getType()];
◆ reinitialize()
StatusCode TrigMessageSvc::reinitialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 76 of file TrigMessageSvc.cxx.
78 m_state = Gaudi::StateMachine::OFFLINE;
80 if (
sc.isSuccess() ) m_state = Gaudi::StateMachine::INITIALIZED;
◆ reportMessage() [1/4]
void TrigMessageSvc::reportMessage |
( |
const Message & |
message | ) |
|
|
overridevirtual |
◆ reportMessage() [2/4]
void TrigMessageSvc::reportMessage |
( |
const Message & |
msg, |
|
|
int |
outputLevel |
|
) |
| |
|
overridevirtual |
◆ reportMessage() [3/4]
virtual void TrigMessageSvc::reportMessage |
( |
const StatusCode & |
, |
|
|
std::string_view |
|
|
) |
| |
|
inlineoverridevirtual |
◆ reportMessage() [4/4]
void TrigMessageSvc::reportMessage |
( |
std::string |
source, |
|
|
int |
type, |
|
|
std::string |
message |
|
) |
| |
|
overridevirtual |
◆ setDefaultStream()
virtual void TrigMessageSvc::setDefaultStream |
( |
std::ostream * |
stream | ) |
|
|
inlineoverridevirtual |
◆ setOutputLevel() [1/2]
void TrigMessageSvc::setOutputLevel |
( |
int |
new_level | ) |
|
|
overridevirtual |
◆ setOutputLevel() [2/2]
void TrigMessageSvc::setOutputLevel |
( |
std::string_view |
source, |
|
|
int |
new_level |
|
) |
| |
|
overridevirtual |
◆ setupLimits()
void TrigMessageSvc::setupLimits |
( |
Gaudi::Details::PropertyBase & |
prop | ) |
|
|
private |
Definition at line 147 of file TrigMessageSvc.cxx.
151 if (prop.name() ==
"alwaysLimit") {
152 Gaudi::Property<int>*
p =
dynamic_cast<Gaudi::Property<int>*
>(&prop);
153 if (
p &&
p->value() != 0) {
154 std::cout <<
"TrigMessageSvc ERROR: cannot suppress ALWAYS messages" << std::endl;
158 else if (prop.name() ==
"defaultLimit") {
165 else if (prop.name() !=
"fatalLimit" && prop.name() !=
"errorLimit" &&
166 prop.name() !=
"warningLimit" && prop.name() ==
"infoLimit" &&
167 prop.name() ==
"debugLimit" && prop.name() ==
"verboseLimit") {
168 std::cout <<
"TrigMessageSvc ERROR: Unknown message limit parameter: " << prop.name()
◆ setupThreshold()
void TrigMessageSvc::setupThreshold |
( |
Gaudi::Details::PropertyBase & |
prop | ) |
|
|
private |
Definition at line 174 of file TrigMessageSvc.cxx.
176 static const std::array<std::pair<const char*, MSG::Level>, 7> tbl{{{
"setFatal",
MSG::FATAL},
177 {
"setError", MSG::ERROR},
178 {
"setWarning", MSG::WARNING},
179 {
"setInfo", MSG::INFO},
184 auto i = std::find_if(
186 [&](
const std::pair<const char*, MSG::Level>&
t) {
return prop.name() ==
t.first; });
188 std::cerr <<
"TrigMessageSvc ERROR: Unknown message threshold parameter: " << prop.name()
194 Gaudi::Property<std::vector<std::string>>* sap =
195 dynamic_cast<Gaudi::Property<std::vector<std::string>
>*>(&prop);
197 std::cerr <<
"could not dcast " << prop.name()
198 <<
" to a Gaudi::Property<std::vector<std::string>> (which it "
◆ start()
StatusCode TrigMessageSvc::start |
( |
| ) |
|
|
overridevirtual |
◆ stop()
StatusCode TrigMessageSvc::stop |
( |
| ) |
|
|
overridevirtual |
◆ useColor()
virtual bool TrigMessageSvc::useColor |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ m_asyncReporting
bool TrigMessageSvc::m_asyncReporting {false} |
|
private |
(
- See also
- MsgStream::doOutput). Async reporting active
Definition at line 196 of file TrigMessageSvc.h.
◆ m_color
Gaudi::Property<bool> TrigMessageSvc::m_color |
|
private |
Initial value:{this, "useColors", false,
"Colors are not supported by TrigMessageSvc"}
Definition at line 121 of file TrigMessageSvc.h.
◆ m_defaultFormat
Gaudi::Property<std::string> TrigMessageSvc::m_defaultFormat |
|
private |
Initial value:{this, "Format", Message::getDefaultFormat(),
"Default message format"}
Definition at line 108 of file TrigMessageSvc.h.
◆ m_defaultStream
std::ostream* TrigMessageSvc::m_defaultStream = &std::cout |
|
private |
◆ m_defaultTimeFormat
Gaudi::Property<std::string> TrigMessageSvc::m_defaultTimeFormat |
|
private |
Initial value:{
this, "timeFormat", Message::getDefaultTimeFormat(), "Message time format"}
Definition at line 112 of file TrigMessageSvc.h.
◆ m_doPublish
bool TrigMessageSvc::m_doPublish {false} |
|
private |
◆ m_doSuppress
bool TrigMessageSvc::m_doSuppress {false} |
|
private |
◆ m_ersEventLimit
Gaudi::Property<int> TrigMessageSvc::m_ersEventLimit |
|
private |
Initial value:{this, "ersPerEventLimit", -1,
"Maximum number of messages (per event and level) that are forwarded to ERS (-1: disabled)"}
Definition at line 165 of file TrigMessageSvc.h.
◆ m_ersFormat
Gaudi::Property<std::string> TrigMessageSvc::m_ersFormat |
|
private |
Initial value:{this, "ErsFormat", Message::getDefaultFormat(),
"ERS message format"}
Definition at line 110 of file TrigMessageSvc.h.
◆ m_eventIDLevel
Gaudi::Property<unsigned int> TrigMessageSvc::m_eventIDLevel |
|
private |
Initial value:
"Print event ID for this and higher message levels"}
Definition at line 119 of file TrigMessageSvc.h.
◆ m_messageActionsQueue
tbb::concurrent_bounded_queue<std::function<void()> > TrigMessageSvc::m_messageActionsQueue |
|
private |
◆ m_msgCount
std::array<int, MSG::NUM_LEVELS> TrigMessageSvc::m_msgCount {} |
|
private |
◆ m_msgCountHist
TH1I* TrigMessageSvc::m_msgCountHist {nullptr} |
|
private |
◆ m_msgCountSrcHist
TH2I* TrigMessageSvc::m_msgCountSrcHist {nullptr} |
|
private |
◆ m_msgHashCount
std::map<size_t, unsigned int> TrigMessageSvc::m_msgHashCount |
|
private |
◆ m_msgLimit
std::array<Gaudi::Property<int>, MSG::NUM_LEVELS> TrigMessageSvc::m_msgLimit |
|
private |
Initial value:{{{this, "defaultLimit", 500},
{this, "verboseLimit", 500},
{this, "debugLimit", 500},
{this, "infoLimit", 500},
{this, "warningLimit", 500},
{this, "errorLimit", 500},
{this, "fatalLimit", 500},
{this, "alwaysLimit", 0}}}
Definition at line 137 of file TrigMessageSvc.h.
◆ m_publishLevel
Gaudi::Property<unsigned int> TrigMessageSvc::m_publishLevel |
|
private |
Initial value:{this, "publishLevel", MSG::INFO,
"Publish message statistics for this and higher message levels"}
Definition at line 117 of file TrigMessageSvc.h.
◆ m_slotMsgCount
std::unordered_map<EventContext::ContextID_t, std::pair<EventContext::ContextEvt_t, MsgAry> > TrigMessageSvc::m_slotMsgCount |
|
private |
◆ m_sourceMap
std::map<std::string, MsgAry> TrigMessageSvc::m_sourceMap |
|
private |
◆ m_statLevel
Gaudi::Property<unsigned int> TrigMessageSvc::m_statLevel |
|
private |
Initial value:{this, "statLevel", 0,
"Show total message statistics for >= level"}
Definition at line 115 of file TrigMessageSvc.h.
◆ m_stats
Gaudi::Property<bool> TrigMessageSvc::m_stats {this, "showStats", false, "Show message statistics"} |
|
private |
◆ m_suppress
Gaudi::Property<bool> TrigMessageSvc::m_suppress {this, "enableSuppression", false, "Enable message suppression"} |
|
private |
◆ m_suppressRunningOnly
Gaudi::Property<bool> TrigMessageSvc::m_suppressRunningOnly |
|
private |
Initial value:{this, "suppressRunningOnly", true,
"Use message suppression only during RUNNING state"}
Definition at line 124 of file TrigMessageSvc.h.
◆ m_thread
std::thread TrigMessageSvc::m_thread |
|
private |
◆ m_thresholdMap
◆ m_thresholdMapMutex
std::recursive_mutex TrigMessageSvc::m_thresholdMapMutex |
|
mutableprivate |
◆ m_thresholdProp
std::array<Gaudi::Property<std::vector<std::string> >, MSG::NUM_LEVELS> TrigMessageSvc::m_thresholdProp |
|
private |
Initial value:{
{{},
{this, "setVerbose"},
{this, "setDebug"},
{this, "setInfo"},
{this, "setWarning"},
{this, "setError"},
{this, "setFatal"},
{this, "setAlways"}}}
Definition at line 127 of file TrigMessageSvc.h.
◆ m_useERS
std::array<Gaudi::Property<std::vector<std::string> >, MSG::NUM_LEVELS> TrigMessageSvc::m_useERS |
|
private |
Initial value:{
{{},
{this, "useErsVerbose", {}},
{this, "useErsDebug", {}},
{this, "useErsInfo", {}},
{this, "useErsWarning", {}},
{this, "useErsError", {}},
{this, "useErsFatal", {}},
{this, "useErsAlways", {}}}}
Special properties to control output to ERS of individual sources.
The syntax is as follows (these are NOT regular expressions):
useErsFatal = [] # forward none (default) useErsFatal = ['*'] # forward all useErsFatal = ['CoreDumpSvc','MyAlg'] # forward these sources useErsFatal = ['*','!MyAlg'] # forward all except MyAlg
Definition at line 155 of file TrigMessageSvc.h.
The documentation for this class was generated from the following files:
void setupThreshold(Gaudi::Details::PropertyBase &prop)
tbb::concurrent_bounded_queue< std::function< void()> > m_messageActionsQueue
path
python interpreter configuration --------------------------------------—
Gaudi::Property< std::string > m_defaultFormat
ThresholdMap m_thresholdMap
Output level threshold map.
std::array< int, MSG::NUM_LEVELS > m_msgCount
counts per level
TH1I * m_msgCountHist
Message counting per level histogram.
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > m_msgLimit
Gaudi::Property< std::string > m_ersFormat
std::recursive_mutex m_thresholdMapMutex
Scoped lock to be used for threaded histogram operations.
virtual StatusCode initialize() override
virtual int outputLevel() const override
Gaudi::Property< int > m_ersEventLimit
bool m_doPublish
are we publishing message statistics?
::StatusCode StatusCode
StatusCode definition for legacy code.
std::map< std::string, MsgAry > m_sourceMap
counts per source
TH2I * m_msgCountSrcHist
Message counting per message source.
virtual void setOutputLevel(int new_level) override
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > m_thresholdProp
virtual void reportMessage(const Message &message) override
Gaudi::Property< unsigned int > m_eventIDLevel
bool passErsFilter(const std::string &source, const std::vector< std::string > &filter) const
bool passErsLimit(const Message &msg)
Gaudi::Property< unsigned int > m_statLevel
void fill(H5::Group &out_file, size_t iterations)
void i_reportMessage(const Message &msg, int outputLevel)
Internal implementation of reportMessage(const Message&,int) without lock.
std::string to_string(const DetectorType &type)
std::thread m_thread
Thread for asynchronous reporting.
static const std::string & type()
Incident type.
Gaudi::Property< std::string > m_defaultTimeFormat
Gaudi::Property< bool > m_stats
bool m_doSuppress
is suppression currently enabled?
void i_reportERS(const Message &msg) const
Report message to online messaging system (ERS)
std::ostream * m_defaultStream
Pointer to the output stream.
std::map< size_t, unsigned int > m_msgHashCount
counts per message hash
Gaudi::Property< unsigned int > m_publishLevel
std::unordered_map< EventContext::ContextID_t, std::pair< EventContext::ContextEvt_t, MsgAry > > m_slotMsgCount
counts per slot and level
void setupLimits(Gaudi::Details::PropertyBase &prop)
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > m_useERS
Special properties to control output to ERS of individual sources.
Gaudi::Property< bool > m_suppressRunningOnly
Gaudi::Property< bool > m_suppress
Gaudi::Property< bool > m_color