The Gaudi Framework  v33r1 (b1225454)
MessageSvc Class Reference

#include <src/MessageSvc/MessageSvc.h>

Inheritance diagram for MessageSvc:
Collaboration diagram for MessageSvc:

Classes

struct  MsgAry
 Private helper class to keep the count of messages of a type (MSG::LEVEL). More...
 

Public Types

typedef std::pair< std::string, std::ostream * > NamedStream
 
typedef std::multimap< int, NamedStreamStreamMap
 
typedef std::multimap< StatusCode, MessageMessageMap
 
typedef std::map< std::string, int, std::less<> > ThresholdMap
 
- Public Types inherited from extends< Service, IMessageSvc, IInactiveMessageCounter >
using base_class = extends
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
- Public Types inherited from Service
using Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
using base_class = CommonMessaging
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 

Public Member Functions

 MessageSvc (const std::string &name, ISvcLocator *svcloc)
 
StatusCode reinitialize () override
 Reinitialize Service. More...
 
StatusCode initialize () override
 Initialize Service. More...
 
StatusCode finalize () override
 Finalize Service. More...
 
void reportMessage (const Message &message) override
 
void reportMessage (const Message &msg, int outputLevel) override
 
void reportMessage (const StatusCode &code, const std::string &source="") override
 
void reportMessage (const char *source, int type, const char *message) override
 
void reportMessage (const std::string &source, int type, const std::string &message) override
 
void insertMessage (const StatusCode &code, const Message &message) override
 
void eraseMessage () override
 
void eraseMessage (const StatusCode &code) override
 
void eraseMessage (const StatusCode &code, const Message &message) override
 
void insertStream (int message_type, std::string name, std::ostream *stream) override
 
void eraseStream () override
 
void eraseStream (int message_type) override
 
void eraseStream (int message_type, std::ostream *stream) override
 
void eraseStream (std::ostream *stream) override
 
std::ostreamdefaultStream () const override
 
void setDefaultStream (std::ostream *stream) override
 
int outputLevel () const override
 
int outputLevel (std::string_view source) const override
 
void setOutputLevel (int new_level) override
 
void setOutputLevel (std::string_view source, int new_level) override
 
bool useColor () const override
 
std::string getLogColor (int logLevel) const override
 
int messageCount (MSG::Level logLevel) const override
 
void incrInactiveCount (MSG::Level level, const std::string &src) override
 
- Public Member Functions inherited from extends< Service, IMessageSvc, IInactiveMessageCounter >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
- Public Member Functions inherited from Service
const std::stringname () const override
 Retrieve name of the service. More...
 
StatusCode configure () override
 
StatusCode initialize () override
 
StatusCode start () override
 
StatusCode stop () override
 
StatusCode finalize () override
 
StatusCode terminate () override
 
Gaudi::StateMachine::State FSMState () const override
 
Gaudi::StateMachine::State targetFSMState () const override
 
StatusCode reinitialize () override
 
StatusCode restart () override
 
StatusCode sysInitialize () override
 Initialize Service. More...
 
StatusCode sysStart () override
 Initialize Service. More...
 
StatusCode sysStop () override
 Initialize Service. More...
 
StatusCode sysFinalize () override
 Finalize Service. More...
 
StatusCode sysReinitialize () override
 Re-initialize the Service. More...
 
StatusCode sysRestart () override
 Re-initialize the Service. More...
 
 Service (std::string name, ISvcLocator *svcloc)
 Standard Constructor. More...
 
SmartIF< ISvcLocator > & serviceLocator () const override
 Retrieve pointer to service locator. More...
 
StatusCode setProperties ()
 Method for setting declared properties to the values specified for the job. More...
 
template<class T >
StatusCode service (const std::string &name, const T *&psvc, bool createIf=true) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T >
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
 
template<typename IFace = IService>
SmartIF< IFace > service (const std::string &name, bool createIf=true) const
 
template<class T >
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
 Access a service by name and type, creating it if it doesn't already exist. More...
 
template<class T >
StatusCode declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
 Declare used tool. More...
 
SmartIF< IAuditorSvc > & auditorSvc () const
 The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 PropertyHolder ()=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none")
 Helper to wrap a regular data member and use it as a regular property. More...
 
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none")
 Declare a PropertyBase instance setting name and documentation. More...
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property. More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p) override
 set the property form another property More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const std::string &n, const std::string &v) override
 set the property from name and the value More...
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (const std::string &name) const override
 get the property by name More...
 
StatusCode getProperty (const std::string &n, std::string &v) const override
 convert the property to the string More...
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties More...
 
bool hasProperty (const std::string &name) const override
 Return true if we have a property with the given name. More...
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level msgLevel () const
 get the cached level (originally extracted from the embedded MsgStream) More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor. More...
 
const SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 

Protected Member Functions

virtual void i_reportMessage (const Message &msg, int outputLevel)
 Internal implementation of reportMessage(const Message&,int) without lock. More...
 
virtual void i_reportMessage (const StatusCode &code, const std::string &source)
 Internal implementation of reportMessage(const StatusCode&,const std::string&) without lock. More...
 
- Protected Member Functions inherited from Service
 ~Service () override
 Standard Destructor. More...
 
int outputLevel () const
 get the Service's output level More...
 
- Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
Gaudi::Details::PropertyBaseproperty (const std::string &name) const
 
- Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
MSG::Level setUpMessaging () const
 Set up local caches. More...
 
MSG::Level resetMessaging ()
 Reinitialize internal states. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 

Private Member Functions

void setupColors (Gaudi::Details::PropertyBase &prop)
 
void setupLimits (Gaudi::Details::PropertyBase &prop)
 
void setupThreshold (Gaudi::Details::PropertyBase &prop)
 
void setupInactCount (Gaudi::Details::PropertyBase &prop)
 
void setupLogStreams ()
 
void tee (const std::string &sourceName, const std::string &logFileName, const std::set< std::string > &declaredOutFileNames)
 

Private Attributes

Gaudi::Property< std::stringm_defaultFormat {this, "Format", Message::getDefaultFormat(), ""}
 
Gaudi::Property< std::stringm_defaultTimeFormat {this, "timeFormat", Message::getDefaultTimeFormat(), ""}
 
Gaudi::Property< bool > m_stats {this, "showStats", false, ""}
 
Gaudi::Property< unsigned int > m_statLevel {this, "statLevel", 0, ""}
 
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELSm_thresholdProp
 
Gaudi::Property< bool > m_color {this, "useColors", false, ""}
 
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELSm_logColors
 
std::array< Gaudi::Property< int >, MSG::NUM_LEVELSm_msgLimit
 
Gaudi::Property< bool > m_suppress {this, "enableSuppression", false, ""}
 
Gaudi::Property< bool > m_inactCount {this, "countInactive", false, &MessageSvc::setupInactCount, ""}
 
Gaudi::Property< std::vector< std::string > > m_tracedInactiveSources
 
Gaudi::Property< std::map< std::string, std::string > > m_loggedStreamsName
 
std::ostreamm_defaultStream = &std::cout
 Pointer to the output stream. More...
 
Message m_defaultMessage
 Default Message. More...
 
StreamMap m_streamMap
 Stream map. More...
 
MessageMap m_messageMap
 Message map. More...
 
ThresholdMap m_thresholdMap
 Output level threshold map. More...
 
std::string m_logColorCodes [MSG::NUM_LEVELS]
 
std::map< std::string, MsgArym_sourceMap
 
std::map< std::string, MsgArym_inactiveMap
 
std::array< int, MSG::NUM_LEVELSm_msgCount
 
std::map< std::string, std::shared_ptr< std::ostream > > m_loggedStreams
 
std::recursive_mutex m_reportMutex
 Mutex to synchronize multiple threads printing. More...
 
std::recursive_mutex m_messageMapMutex
 Mutex to synchronize multiple access to m_messageMap. More...
 
std::recursive_mutex m_thresholdMapMutex
 Mutex to synchronize multiple access to m_thresholdMap (. More...
 

Additional Inherited Members

- Protected Attributes inherited from Service
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::OFFLINE
 Service state. More...
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::OFFLINE
 Service state. More...
 
Gaudi::Property< int > m_outputLevel {this, "OutputLevel", MSG::NIL, "output level"}
 
Gaudi::Property< bool > m_auditInit {this, "AuditServices", false, " unused"}
 
Gaudi::Property< bool > m_auditorInitialize {this, "AuditInitialize", false, "trigger auditor on initialize()"}
 
Gaudi::Property< bool > m_auditorStart {this, "AuditStart", false, "trigger auditor on start()"}
 
Gaudi::Property< bool > m_auditorStop {this, "AuditStop", false, "trigger auditor on stop()"}
 
Gaudi::Property< bool > m_auditorFinalize {this, "AuditFinalize", false, "trigger auditor on finalize()"}
 
Gaudi::Property< bool > m_auditorReinitialize {this, "AuditReinitialize", false, "trigger auditor on reinitialize()"}
 
Gaudi::Property< bool > m_auditorRestart {this, "AuditRestart", false, "trigger auditor on restart()"}
 
SmartIF< IAuditorSvcm_pAuditorSvc
 Auditor Service. More...
 

Detailed Description

Definition at line 40 of file MessageSvc.h.

Member Typedef Documentation

◆ MessageMap

Definition at line 44 of file MessageSvc.h.

◆ NamedStream

Definition at line 42 of file MessageSvc.h.

◆ StreamMap

Definition at line 43 of file MessageSvc.h.

◆ ThresholdMap

Definition at line 45 of file MessageSvc.h.

Constructor & Destructor Documentation

◆ MessageSvc()

MessageSvc::MessageSvc ( const std::string name,
ISvcLocator svcloc 
)

Definition at line 88 of file MessageSvc.cpp.

88  : base_class( name, svcloc ) {
89 
90  m_outputLevel.declareUpdateHandler( [svcloc]( Gaudi::Details::PropertyBase& ) {
91  SmartIF<IAppMgrUI> app = svcloc;
92  if ( app ) app->outputLevelUpdate();
93  } );
94 
95 #ifndef NDEBUG
96  // initialize the MsgStream static flag.
98 #endif
99 
100  for ( int ic = 0; ic < MSG::NUM_LEVELS; ++ic ) {
101  m_logColors[ic].declareUpdateHandler( &MessageSvc::setupColors, this );
102  m_msgLimit[ic].declareUpdateHandler( &MessageSvc::setupLimits, this );
103  m_thresholdProp[ic].declareUpdateHandler( &MessageSvc::setupThreshold, this );
104  }
105 
106  m_logColors[MSG::FATAL].set( {"blue", "red"} );
107  m_logColors[MSG::ERROR].set( {"white", "red"} );
108  m_logColors[MSG::WARNING].set( {"yellow"} );
109 
111 }
Gaudi::Property< int > m_outputLevel
Definition: Service.h:186
T end(T... args)
void setupColors(Gaudi::Details::PropertyBase &prop)
Definition: MessageSvc.cpp:143
virtual void outputLevelUpdate()=0
Function to call to update the outputLevel of the components (after a change in MessageSvc).
Gaudi::Property< bool > m_inactCount
Definition: MessageSvc.h:175
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:284
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > m_logColors
Definition: MessageSvc.h:156
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:42
T begin(T... args)
void setupLimits(Gaudi::Details::PropertyBase &prop)
Definition: MessageSvc.cpp:185
void setupThreshold(Gaudi::Details::PropertyBase &prop)
Definition: MessageSvc.cpp:205
std::array< int, MSG::NUM_LEVELS > m_msgCount
Definition: MessageSvc.h:204
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > m_thresholdProp
Definition: MessageSvc.h:145
T fill(T... args)
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > m_msgLimit
Definition: MessageSvc.h:165
static GAUDI_API bool enableCountInactive(bool value=true)
Enable/disable the count of inactive messages.
Definition: MsgStream.cpp:41

Member Function Documentation

◆ defaultStream()

std::ostream* MessageSvc::defaultStream ( ) const
inlineoverride

Definition at line 100 of file MessageSvc.h.

100 { return m_defaultStream; }
std::ostream * m_defaultStream
Pointer to the output stream.
Definition: MessageSvc.h:186

◆ eraseMessage() [1/3]

void MessageSvc::eraseMessage ( )
override

Definition at line 544 of file MessageSvc.cpp.

544  {
545  auto lock = std::scoped_lock{m_messageMapMutex};
547 }
MessageMap m_messageMap
Message map.
Definition: MessageSvc.h:189
std::recursive_mutex m_messageMapMutex
Mutex to synchronize multiple access to m_messageMap.
Definition: MessageSvc.h:222
T lock(T... args)
T clear(T... args)

◆ eraseMessage() [2/3]

void MessageSvc::eraseMessage ( const StatusCode code)
override

Definition at line 556 of file MessageSvc.cpp.

556  {
557  auto lock = std::scoped_lock{m_messageMapMutex};
558  m_messageMap.erase( key );
559 }
MessageMap m_messageMap
Message map.
Definition: MessageSvc.h:189
std::recursive_mutex m_messageMapMutex
Mutex to synchronize multiple access to m_messageMap.
Definition: MessageSvc.h:222
T erase(T... args)
T lock(T... args)

◆ eraseMessage() [3/3]

void MessageSvc::eraseMessage ( const StatusCode code,
const Message message 
)
override

Definition at line 568 of file MessageSvc.cpp.

568  {
569  auto lock = std::scoped_lock{m_messageMapMutex};
570 
571  erase_if( m_messageMap, m_messageMap.equal_range( key ),
572  [&]( MessageMap::const_reference j ) { return j.second == msg; } );
573 }
MessageMap m_messageMap
Message map.
Definition: MessageSvc.h:189
std::recursive_mutex m_messageMapMutex
Mutex to synchronize multiple access to m_messageMap.
Definition: MessageSvc.h:222
T lock(T... args)
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
T equal_range(T... args)

◆ eraseStream() [1/4]

void MessageSvc::eraseStream ( )
override

Definition at line 487 of file MessageSvc.cpp.

487 { m_streamMap.clear(); }
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188
T clear(T... args)

◆ eraseStream() [2/4]

void MessageSvc::eraseStream ( int  message_type)
override

Definition at line 496 of file MessageSvc.cpp.

496 { m_streamMap.erase( message_type ); }
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188
T erase(T... args)

◆ eraseStream() [3/4]

void MessageSvc::eraseStream ( int  message_type,
std::ostream stream 
)
override

Definition at line 505 of file MessageSvc.cpp.

505  {
506  if ( stream ) {
507  erase_if( m_streamMap, m_streamMap.equal_range( key ),
508  [&]( StreamMap::const_reference j ) { return j.second.second == stream; } );
509  }
510 }
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188
T equal_range(T... args)

◆ eraseStream() [4/4]

void MessageSvc::eraseStream ( std::ostream stream)
override

Definition at line 519 of file MessageSvc.cpp.

519  {
520  if ( stream ) {
521  erase_if( m_streamMap, [&]( StreamMap::const_reference j ) { return j.second.second == stream; } );
522  }
523 }
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188

◆ finalize()

StatusCode MessageSvc::finalize ( )
override

Finalize Service.

Definition at line 247 of file MessageSvc.cpp.

247  {
248 
249  m_suppress = false;
250 
251  {
253 
254  if ( m_stats ) {
255  os << "Summarizing all message counts" << std::endl;
256  } else {
257  os << "Listing sources of suppressed message: " << std::endl;
258  }
259 
260  os << "=====================================================" << std::endl;
261  os << " Message Source | Level | Count" << std::endl;
262  os << "-----------------------------+---------+-------------" << std::endl;
263 
264  bool found( false );
265 
266  for ( auto itr = m_sourceMap.begin(); itr != m_sourceMap.end(); ++itr ) {
267  for ( unsigned int ic = 0; ic < MSG::NUM_LEVELS; ++ic ) {
268  if ( ( itr->second.msg[ic] >= m_msgLimit[ic] && m_msgLimit[ic] != 0 ) ||
269  ( m_stats && itr->second.msg[ic] > 0 && ic >= m_statLevel.value() ) ) {
270  os << " ";
271  os.width( 28 );
272  os.setf( std::ios_base::left, std::ios_base::adjustfield );
273  os << itr->first;
274  os << "|";
275 
276  os.width( 8 );
277  os.setf( std::ios_base::right, std::ios_base::adjustfield );
278  os << levelNames[ic];
279  os << " |";
280 
281  os.width( 9 );
282  os << itr->second.msg[ic];
283  os << std::endl;
284 
285  found = true;
286  }
287  }
288  }
289  os << "=====================================================" << std::endl;
290  if ( found || m_stats ) std::cout << os.str();
291  }
292 
293 #ifndef NDEBUG
294  if ( m_inactCount.value() ) {
295 
297  os << "Listing sources of Unprotected and Unseen messages\n";
298 
299  bool found( false );
300 
301  unsigned int ml( 0 );
302  for ( const auto& itr : m_inactiveMap ) {
303  for ( unsigned int ic = 0; ic < MSG::NUM_LEVELS; ++ic ) {
304  if ( itr.second.msg[ic] != 0 && itr.first.length() > ml ) { ml = itr.first.length(); }
305  }
306  }
307 
308  for ( unsigned int i = 0; i < ml + 25; ++i ) os << "=";
309 
310  os << std::endl << " ";
311  os.width( ml + 2 );
312  os.setf( std::ios_base::left, std::ios_base::adjustfield );
313  os << "Message Source";
314  os.width( 1 );
315  os << "| Level | Count" << std::endl;
316 
317  for ( unsigned int i = 0; i < ml + 3; ++i ) os << "-";
318  os << "+---------+-----------" << std::endl;
319 
320  for ( auto itr = m_inactiveMap.begin(); itr != m_inactiveMap.end(); ++itr ) {
321  for ( unsigned int ic = 0; ic < MSG::NUM_LEVELS; ++ic ) {
322  if ( itr->second.msg[ic] != 0 ) {
323  os << " ";
324  os.width( ml + 2 );
325  os.setf( std::ios_base::left, std::ios_base::adjustfield );
326  os << itr->first;
327 
328  os << "|";
329 
330  os.width( 8 );
331  os.setf( std::ios_base::right, std::ios_base::adjustfield );
332  os << levelNames[ic];
333 
334  os << " |";
335 
336  os.width( 9 );
337  os << itr->second.msg[ic];
338 
339  os << std::endl;
340 
341  found = true;
342  }
343  }
344  }
345  for ( unsigned int i = 0; i < ml + 25; ++i ) os << "=";
346  os << std::endl;
347 
348  if ( found ) std::cout << os.str();
349  }
350 #endif
351 
352  return StatusCode::SUCCESS;
353 }
T setf(T... args)
std::map< std::string, MsgAry > m_sourceMap
Definition: MessageSvc.h:202
std::map< std::string, MsgAry > m_inactiveMap
Definition: MessageSvc.h:202
T endl(T... args)
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
Gaudi::Property< bool > m_inactCount
Definition: MessageSvc.h:175
Gaudi::Property< unsigned int > m_statLevel
Definition: MessageSvc.h:143
T width(T... args)
T str(T... args)
Gaudi::Property< bool > m_stats
Definition: MessageSvc.h:142
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > m_msgLimit
Definition: MessageSvc.h:165
Gaudi::Property< bool > m_suppress
Definition: MessageSvc.h:174

◆ getLogColor()

std::string MessageSvc::getLogColor ( int  logLevel) const
override

Definition at line 610 of file MessageSvc.cpp.

610  {
611  // ---------------------------------------------------------------------------
612  return ( logLevel < MSG::NUM_LEVELS ) ? m_logColorCodes[logLevel] : "";
613 }
std::string m_logColorCodes[MSG::NUM_LEVELS]
Definition: MessageSvc.h:192

◆ i_reportMessage() [1/2]

void MessageSvc::i_reportMessage ( const Message msg,
int  outputLevel 
)
protectedvirtual

Internal implementation of reportMessage(const Message&,int) without lock.

Definition at line 366 of file MessageSvc.cpp.

366  {
367  int key = msg.getType();
368 
369  ++m_msgCount[key];
370 
371  const Message* cmsg = &msg;
372 
373  // processing logged streams
374  if ( !m_loggedStreams.empty() ) {
375  auto iLog = m_loggedStreams.find( msg.getSource() );
376  if ( m_loggedStreams.end() != iLog ) { ( *iLog->second ) << *cmsg << std::endl; }
377  }
378 
379  if ( m_suppress.value() || m_stats.value() ) {
380 
381  // Increase the counter of 'key' type of messages for the source and
382  // get the new value.
383  const int nmsg = ++( m_sourceMap[msg.getSource()].msg[key] );
384 
385  if ( m_suppress.value() && m_msgLimit[key] != 0 ) {
386  if ( nmsg > m_msgLimit[key] ) return;
387  if ( nmsg == m_msgLimit[key] ) {
388  std::string txt = levelNames[key] + " message limit (" + std::to_string( m_msgLimit[key].value() ) +
389  ") reached for " + msg.getSource() + ". Suppressing further output.";
390  cmsg = new Message( msg.getSource(), MSG::WARNING, std::move( txt ) );
391  cmsg->setFormat( msg.getFormat() );
392  }
393  }
394  }
395 
396  auto range = m_streamMap.equal_range( key );
397  if ( range.first != m_streamMap.end() ) {
398  std::for_each( range.first, range.second,
399  [&]( StreamMap::const_reference sm ) { *sm.second.second << *cmsg << std::endl; } );
400  } else if ( key >= outputLevel ) {
401  msg.setFormat( m_defaultFormat );
402  msg.setTimeFormat( m_defaultTimeFormat );
403  if ( !m_color ) {
404  ( *m_defaultStream ) << *cmsg << std::endl << std::flush;
405  } else {
406  ( *m_defaultStream ) << m_logColorCodes[key] << *cmsg << "\033[m" << std::endl << std::flush;
407  }
408  }
409 
410  if ( cmsg != &msg ) { delete cmsg; }
411 }
T empty(T... args)
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188
std::map< std::string, MsgAry > m_sourceMap
Definition: MessageSvc.h:202
T to_string(T... args)
T endl(T... args)
Gaudi::Property< std::string > m_defaultTimeFormat
Definition: MessageSvc.h:141
T end(T... args)
void setFormat(std::string msg) const
Set the format string.
Definition: Message.cpp:153
STL class.
std::map< std::string, std::shared_ptr< std::ostream > > m_loggedStreams
Definition: MessageSvc.h:206
Gaudi::Property< bool > m_color
Definition: MessageSvc.h:154
Gaudi::Property< std::string > m_defaultFormat
Definition: MessageSvc.h:140
T move(T... args)
T flush(T... args)
T find(T... args)
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
The Message class.
Definition: Message.h:27
std::string m_logColorCodes[MSG::NUM_LEVELS]
Definition: MessageSvc.h:192
Gaudi::Property< bool > m_stats
Definition: MessageSvc.h:142
std::array< int, MSG::NUM_LEVELS > m_msgCount
Definition: MessageSvc.h:204
decltype(auto) range(Args &&... args)
Zips multiple containers together to form a single range.
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > m_msgLimit
Definition: MessageSvc.h:165
int outputLevel() const override
Definition: MessageSvc.cpp:576
T for_each(T... args)
Gaudi::Property< bool > m_suppress
Definition: MessageSvc.h:174
T equal_range(T... args)

◆ i_reportMessage() [2/2]

void MessageSvc::i_reportMessage ( const StatusCode code,
const std::string source 
)
protectedvirtual

Internal implementation of reportMessage(const StatusCode&,const std::string&) without lock.

Definition at line 452 of file MessageSvc.cpp.

452  {
453  int level = outputLevel( source );
454  auto report = [&]( Message mesg ) {
455  mesg.setSource( source );
456  Message stat_code( source, mesg.getType(), "Status Code " + std::to_string( code.getCode() ) );
457  i_reportMessage( std::move( stat_code ), level );
458  i_reportMessage( std::move( mesg ), level );
459  };
460 
461  auto range = m_messageMap.equal_range( code );
462  if ( range.first != m_messageMap.end() ) {
463  std::for_each( range.first, range.second, [&]( MessageMap::const_reference sm ) { report( sm.second ); } );
464  } else {
465  report( m_defaultMessage );
466  }
467 }
code_t getCode() const
Retrieve value ("checks" the StatusCode)
Definition: StatusCode.h:152
virtual void i_reportMessage(const Message &msg, int outputLevel)
Internal implementation of reportMessage(const Message&,int) without lock.
Definition: MessageSvc.cpp:366
Message m_defaultMessage
Default Message.
Definition: MessageSvc.h:187
T to_string(T... args)
MessageMap m_messageMap
Message map.
Definition: MessageSvc.h:189
T end(T... args)
T move(T... args)
The Message class.
Definition: Message.h:27
decltype(auto) range(Args &&... args)
Zips multiple containers together to form a single range.
int outputLevel() const override
Definition: MessageSvc.cpp:576
T for_each(T... args)
T equal_range(T... args)

◆ incrInactiveCount()

void MessageSvc::incrInactiveCount ( MSG::Level  level,
const std::string src 
)
override

Definition at line 619 of file MessageSvc.cpp.

619  {
620  ++( m_inactiveMap[source].msg[level] );
621 
624  std::cout << "== inactive message detected from " << source << " ==" << std::endl;
625  std::string t;
626  System::backTrace( t, 25, 0 );
627  std::cout << t << std::endl;
628  }
629 }
std::map< std::string, MsgAry > m_inactiveMap
Definition: MessageSvc.h:202
T endl(T... args)
Gaudi::Property< std::vector< std::string > > m_tracedInactiveSources
Definition: MessageSvc.h:177
GAUDI_API int backTrace(void **addresses, const int depth)
STL class.
def end
Definition: IOTest.py:123
T find(T... args)
AttribStringParser::Iterator begin(const AttribStringParser &parser)

◆ initialize()

StatusCode MessageSvc::initialize ( )
override

Initialize Service.

Definition at line 116 of file MessageSvc.cpp.

116  {
118  if ( sc.isFailure() ) return sc;
119 
120 #ifdef _WIN32
121  m_color = false;
122 #endif
123 
124  // make sure the map of logged stream names is initialized
125  setupLogStreams();
126 
127  return StatusCode::SUCCESS;
128 }
StatusCode initialize() override
Definition: Service.cpp:70
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
void setupLogStreams()
Definition: MessageSvc.cpp:632
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
Gaudi::Property< bool > m_color
Definition: MessageSvc.h:154
bool isFailure() const
Definition: StatusCode.h:145

◆ insertMessage()

void MessageSvc::insertMessage ( const StatusCode code,
const Message message 
)
override

Definition at line 532 of file MessageSvc.cpp.

532  {
533  auto lock = std::scoped_lock{m_messageMapMutex};
534  m_messageMap.emplace( key, msg );
535 }
MessageMap m_messageMap
Message map.
Definition: MessageSvc.h:189
std::recursive_mutex m_messageMapMutex
Mutex to synchronize multiple access to m_messageMap.
Definition: MessageSvc.h:222
T lock(T... args)
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
T emplace(T... args)

◆ insertStream()

void MessageSvc::insertStream ( int  message_type,
std::string  name,
std::ostream stream 
)
override

Definition at line 476 of file MessageSvc.cpp.

476  {
477  m_streamMap.emplace( key, NamedStream( std::move( name ), stream ) );
478 }
StreamMap m_streamMap
Stream map.
Definition: MessageSvc.h:188
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:284
std::pair< std::string, std::ostream * > NamedStream
Definition: MessageSvc.h:42
T move(T... args)
T emplace(T... args)

◆ messageCount()

int MessageSvc::messageCount ( MSG::Level  logLevel) const
override

Definition at line 616 of file MessageSvc.cpp.

616 { return m_msgCount[level]; }
std::array< int, MSG::NUM_LEVELS > m_msgCount
Definition: MessageSvc.h:204

◆ outputLevel() [1/2]

int MessageSvc::outputLevel ( ) const
override

Definition at line 576 of file MessageSvc.cpp.

576  {
577  // ---------------------------------------------------------------------------
578  return m_outputLevel;
579 }
Gaudi::Property< int > m_outputLevel
Definition: Service.h:186

◆ outputLevel() [2/2]

int MessageSvc::outputLevel ( std::string_view  source) const
override

Definition at line 582 of file MessageSvc.cpp.

582  {
583  // ---------------------------------------------------------------------------
584  auto lock = std::scoped_lock{m_thresholdMapMutex};
585  auto it = m_thresholdMap.find( source );
586  return it != m_thresholdMap.end() ? it->second : m_outputLevel.value();
587 }
Gaudi::Property< int > m_outputLevel
Definition: Service.h:186
T end(T... args)
ThresholdMap m_thresholdMap
Output level threshold map.
Definition: MessageSvc.h:190
T lock(T... args)
T find(T... args)
std::recursive_mutex m_thresholdMapMutex
Mutex to synchronize multiple access to m_thresholdMap (.
Definition: MessageSvc.h:226

◆ reinitialize()

StatusCode MessageSvc::reinitialize ( )
override

Reinitialize Service.

Definition at line 133 of file MessageSvc.cpp.

133  {
135  StatusCode sc = initialize();
137 
138  return sc;
139 }
Gaudi::StateMachine::State m_state
Service state.
Definition: Service.h:163
StatusCode initialize() override
Initialize Service.
Definition: MessageSvc.cpp:116
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
bool isSuccess() const
Definition: StatusCode.h:365

◆ reportMessage() [1/5]

void MessageSvc::reportMessage ( const Message message)
override

Definition at line 419 of file MessageSvc.cpp.

419 { reportMessage( msg, outputLevel( msg.getSource() ) ); }
void reportMessage(const Message &message) override
Definition: MessageSvc.cpp:419
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
int outputLevel() const override
Definition: MessageSvc.cpp:576

◆ reportMessage() [2/5]

void MessageSvc::reportMessage ( const Message msg,
int  outputLevel 
)
override

Definition at line 361 of file MessageSvc.cpp.

361  {
362  auto lock = std::scoped_lock{m_reportMutex};
364 }
virtual void i_reportMessage(const Message &msg, int outputLevel)
Internal implementation of reportMessage(const Message&,int) without lock.
Definition: MessageSvc.cpp:366
T lock(T... args)
std::recursive_mutex m_reportMutex
Mutex to synchronize multiple threads printing.
Definition: MessageSvc.h:219
MsgStream & msg() const
shortcut for the method msgStream(MSG::INFO)
int outputLevel() const override
Definition: MessageSvc.cpp:576

◆ reportMessage() [3/5]

void MessageSvc::reportMessage ( const StatusCode code,
const std::string source = "" 
)
override

Definition at line 447 of file MessageSvc.cpp.

447  {
448  auto lock = std::scoped_lock{m_messageMapMutex};
449  i_reportMessage( code, source );
450 }
virtual void i_reportMessage(const Message &msg, int outputLevel)
Internal implementation of reportMessage(const Message&,int) without lock.
Definition: MessageSvc.cpp:366
std::recursive_mutex m_messageMapMutex
Mutex to synchronize multiple access to m_messageMap.
Definition: MessageSvc.h:222
T lock(T... args)

◆ reportMessage() [4/5]

void MessageSvc::reportMessage ( const char *  source,
int  type,
const char *  message 
)
override

Definition at line 427 of file MessageSvc.cpp.

427  {
428  reportMessage( Message{source, type, message} );
429 }
void reportMessage(const Message &message) override
Definition: MessageSvc.cpp:419
The Message class.
Definition: Message.h:27

◆ reportMessage() [5/5]

void MessageSvc::reportMessage ( const std::string source,
int  type,
const std::string message 
)
override

Definition at line 437 of file MessageSvc.cpp.

437  {
438  reportMessage( Message{source, type, message} );
439 }
void reportMessage(const Message &message) override
Definition: MessageSvc.cpp:419
The Message class.
Definition: Message.h:27

◆ setDefaultStream()

void MessageSvc::setDefaultStream ( std::ostream stream)
inlineoverride

Definition at line 103 of file MessageSvc.h.

103  {
104  auto lock = std::scoped_lock{m_reportMutex};
105  m_defaultStream = stream;
106  }
std::ostream * m_defaultStream
Pointer to the output stream.
Definition: MessageSvc.h:186
T lock(T... args)
std::recursive_mutex m_reportMutex
Mutex to synchronize multiple threads printing.
Definition: MessageSvc.h:219

◆ setOutputLevel() [1/2]

void MessageSvc::setOutputLevel ( int  new_level)
override

Definition at line 590 of file MessageSvc.cpp.

590  {
591  // ---------------------------------------------------------------------------
592  m_outputLevel = new_level;
593 }
Gaudi::Property< int > m_outputLevel
Definition: Service.h:186

◆ setOutputLevel() [2/2]

void MessageSvc::setOutputLevel ( std::string_view  source,
int  new_level 
)
override

Definition at line 596 of file MessageSvc.cpp.

596  {
597  // ---------------------------------------------------------------------------
598  auto lock = std::scoped_lock{m_thresholdMapMutex};
599 
600  // only write if we really have to...
601  auto i = m_thresholdMap.find( source );
602  if ( i == m_thresholdMap.end() ) {
603  m_thresholdMap.emplace( source, level );
604  } else if ( i->second != level ) {
605  i->second = level;
606  }
607 }
T end(T... args)
ThresholdMap m_thresholdMap
Output level threshold map.
Definition: MessageSvc.h:190
T lock(T... args)
T find(T... args)
T emplace(T... args)
std::recursive_mutex m_thresholdMapMutex
Mutex to synchronize multiple access to m_thresholdMap (.
Definition: MessageSvc.h:226

◆ setupColors()

void MessageSvc::setupColors ( Gaudi::Details::PropertyBase prop)
private

Definition at line 143 of file MessageSvc.cpp.

143  {
144  const std::string& pname = prop.name();
145  int level;
146  if ( pname == "fatalColorCode" )
147  level = MSG::FATAL;
148  else if ( pname == "errorColorCode" )
149  level = MSG::ERROR;
150  else if ( pname == "warningColorCode" )
152  else if ( pname == "infoColorCode" )
153  level = MSG::INFO;
154  else if ( pname == "debugColorCode" )
155  level = MSG::DEBUG;
156  else if ( pname == "verboseColorCode" )
158  else if ( pname == "alwaysColorCode" )
159  level = MSG::ALWAYS;
160  else {
161  throw GaudiException( "ERROR: Unknown message color parameter: " + pname, name(), StatusCode::FAILURE );
162  }
163 
164  auto& code = m_logColorCodes[level];
165 
166  const auto& col_desc = m_logColors[level].value();
167 
168  if ( col_desc.size() == 1 ) {
169  const std::string& desc = col_desc[0];
170  if ( desc.empty() ) {
171  code = "";
172  } else if ( desc[0] == '[' ) {
173  code = "\033" + desc;
174  } else {
175  code = "\033[" + colTrans( desc, 90 ) + ";1m";
176  }
177  } else if ( col_desc.size() == 2 ) {
178  code = "\033[" + colTrans( col_desc[0], 90 ) + ";" + colTrans( col_desc[1], 100 ) + ";1m";
179  } else { // empty desc: no color
180  code = "";
181  }
182 }
T empty(T... args)
Define general base for Gaudi exception.
const std::string name() const
property name
Definition: Property.h:46
STL class.
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:284
std::array< Gaudi::Property< std::vector< std::string > >, MSG::NUM_LEVELS > m_logColors
Definition: MessageSvc.h:156
constexpr static const auto FAILURE
Definition: StatusCode.h:101
std::string m_logColorCodes[MSG::NUM_LEVELS]
Definition: MessageSvc.h:192

◆ setupInactCount()

void MessageSvc::setupInactCount ( Gaudi::Details::PropertyBase prop)
private

Definition at line 237 of file MessageSvc.cpp.

237  {
238  if ( prop.name() == "countInactive" ) {
239  Gaudi::Property<bool>* p = dynamic_cast<Gaudi::Property<bool>*>( &prop );
240  if ( p ) MsgStream::enableCountInactive( p->value() );
241  }
242 }
Implementation of property with value of concrete type.
Definition: Property.h:370
const std::string name() const
property name
Definition: Property.h:46
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:554
static GAUDI_API bool enableCountInactive(bool value=true)
Enable/disable the count of inactive messages.
Definition: MsgStream.cpp:41

◆ setupLimits()

void MessageSvc::setupLimits ( Gaudi::Details::PropertyBase prop)
private

Definition at line 185 of file MessageSvc.cpp.

185  {
186  // Just report problems in the settings of the limits and unknown limit parameters
187  if ( prop.name() == "alwaysLimit" ) {
188  Gaudi::Property<int>* p = dynamic_cast<Gaudi::Property<int>*>( &prop );
189  if ( p && p->value() != 0 ) {
190  std::cout << "MessageSvc ERROR: cannot suppress ALWAYS messages" << std::endl;
191  p->setValue( 0 );
192  }
193  } else if ( prop.name() == "defaultLimit" ) {
194  for ( int i = MSG::VERBOSE; i < MSG::NUM_LEVELS; ++i ) {
195  if ( i != MSG::ALWAYS ) { m_msgLimit[i] = m_msgLimit[MSG::NIL].value(); }
196  }
197  } else if ( prop.name() != "fatalLimit" && prop.name() != "errorLimit" && prop.name() != "warningLimit" &&
198  prop.name() == "infoLimit" && prop.name() == "debugLimit" && prop.name() == "verboseLimit" ) {
199  std::cout << "MessageSvc ERROR: Unknown message limit parameter: " << prop.name() << std::endl;
200  return;
201  }
202 }
bool setValue(const ValueType &v)
Definition: Property.h:556
Implementation of property with value of concrete type.
Definition: Property.h:370
T endl(T... args)
const std::string name() const
property name
Definition: Property.h:46
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:554
std::array< Gaudi::Property< int >, MSG::NUM_LEVELS > m_msgLimit
Definition: MessageSvc.h:165

◆ setupLogStreams()

void MessageSvc::setupLogStreams ( )
private

Definition at line 632 of file MessageSvc.cpp.

632  {
633  // reset state
635 
636  for ( auto& iProp : m_loggedStreamsName ) {
637 
638  std::set<std::string> outFileNames;
639  for ( auto& jProp : m_loggedStreamsName ) {
640  if ( jProp.first != iProp.first ) { outFileNames.insert( jProp.second ); }
641  }
642  tee( iProp.first, iProp.second, outFileNames );
643 
644  } //> loop over property entries
645 }
std::map< std::string, std::shared_ptr< std::ostream > > m_loggedStreams
Definition: MessageSvc.h:206
T clear(T... args)
T insert(T... args)
void tee(const std::string &sourceName, const std::string &logFileName, const std::set< std::string > &declaredOutFileNames)
Definition: MessageSvc.cpp:648
Gaudi::Property< std::map< std::string, std::string > > m_loggedStreamsName
Definition: MessageSvc.h:183

◆ setupThreshold()

void MessageSvc::setupThreshold ( Gaudi::Details::PropertyBase prop)
private

Definition at line 205 of file MessageSvc.cpp.

205  {
206 
207  static const std::array<std::pair<const char*, MSG::Level>, 7> tbl{{{"setFatal", MSG::FATAL},
208  {"setError", MSG::ERROR},
209  {"setWarning", MSG::WARNING},
210  {"setInfo", MSG::INFO},
211  {"setDebug", MSG::DEBUG},
212  {"setVerbose", MSG::VERBOSE},
213  {"setAlways", MSG::ALWAYS}}};
214 
215  auto i = std::find_if( std::begin( tbl ), std::end( tbl ),
216  [&]( const std::pair<const char*, MSG::Level>& t ) { return prop.name() == t.first; } );
217  if ( i == std::end( tbl ) ) {
218  std::cerr << "MessageSvc ERROR: Unknown message threshold parameter: " << prop.name() << std::endl;
219  return;
220  }
221  int ic = i->second;
222 
224  if ( !sap ) {
225  std::cerr << "could not dcast " << prop.name()
226  << " to a Gaudi::Property<std::vector<std::string>> (which it should be!)" << std::endl;
227  } else {
228  for ( auto& i : sap->value() ) setOutputLevel( i, ic );
229  }
230 }
Implementation of property with value of concrete type.
Definition: Property.h:370
T endl(T... args)
T end(T... args)
const std::string name() const
property name
Definition: Property.h:46
void setOutputLevel(int new_level) override
Definition: MessageSvc.cpp:590
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:554
T find_if(T... args)
T begin(T... args)
STL class.

◆ tee()

void MessageSvc::tee ( const std::string sourceName,
const std::string logFileName,
const std::set< std::string > &  declaredOutFileNames 
)
private

Definition at line 648 of file MessageSvc.cpp.

649  {
650  const std::ios_base::openmode openMode = std::ios_base::out | std::ios_base::trunc;
651 
652  auto iStream = m_loggedStreams.find( sourceName );
653  if ( iStream != std::end( m_loggedStreams ) ) { m_loggedStreams.erase( iStream ); }
654 
655  // before creating a new ofstream, make sure there is no already existing
656  // one with the same file name...
657  for ( auto& iStream : m_loggedStreams ) {
658  if ( outFileNames.find( outFileName ) != outFileNames.end() ) {
659  m_loggedStreams[sourceName] = m_loggedStreams[iStream.first];
660  return;
661  }
662  }
663 
664  auto out = std::make_shared<std::ofstream>( outFileName, openMode );
665  if ( out->good() ) m_loggedStreams[sourceName] = std::move( out );
666 }
T end(T... args)
std::map< std::string, std::shared_ptr< std::ostream > > m_loggedStreams
Definition: MessageSvc.h:206
T erase(T... args)
T move(T... args)
T find(T... args)

◆ useColor()

bool MessageSvc::useColor ( ) const
inlineoverride

Definition at line 121 of file MessageSvc.h.

121 { return m_color; }
Gaudi::Property< bool > m_color
Definition: MessageSvc.h:154

Member Data Documentation

◆ m_color

Gaudi::Property<bool> MessageSvc::m_color {this, "useColors", false, ""}
private

Definition at line 154 of file MessageSvc.h.

◆ m_defaultFormat

Gaudi::Property<std::string> MessageSvc::m_defaultFormat {this, "Format", Message::getDefaultFormat(), ""}
private

Definition at line 140 of file MessageSvc.h.

◆ m_defaultMessage

Message MessageSvc::m_defaultMessage
private

Default Message.

Definition at line 187 of file MessageSvc.h.

◆ m_defaultStream

std::ostream* MessageSvc::m_defaultStream = &std::cout
private

Pointer to the output stream.

Definition at line 186 of file MessageSvc.h.

◆ m_defaultTimeFormat

Gaudi::Property<std::string> MessageSvc::m_defaultTimeFormat {this, "timeFormat", Message::getDefaultTimeFormat(), ""}
private

Definition at line 141 of file MessageSvc.h.

◆ m_inactCount

Gaudi::Property<bool> MessageSvc::m_inactCount {this, "countInactive", false, &MessageSvc::setupInactCount, ""}
private

Definition at line 175 of file MessageSvc.h.

◆ m_inactiveMap

std::map<std::string, MsgAry> MessageSvc::m_inactiveMap
private

Definition at line 202 of file MessageSvc.h.

◆ m_logColorCodes

std::string MessageSvc::m_logColorCodes[MSG::NUM_LEVELS]
private

Definition at line 192 of file MessageSvc.h.

◆ m_logColors

std::array<Gaudi::Property<std::vector<std::string> >, MSG::NUM_LEVELS> MessageSvc::m_logColors
private
Initial value:
{{{},
{this, "verboseColorCode"},
{this, "debugColorCode"},
{this, "infoColorCode"},
{this, "warningColorCode"},
{this, "errorColorCode"},
{this, "fatalColorCode"},
{this, "alwaysColorCode"}}}

Definition at line 156 of file MessageSvc.h.

◆ m_loggedStreams

std::map<std::string, std::shared_ptr<std::ostream> > MessageSvc::m_loggedStreams
private

Definition at line 206 of file MessageSvc.h.

◆ m_loggedStreamsName

Gaudi::Property<std::map<std::string, std::string> > MessageSvc::m_loggedStreamsName
private
Initial value:
{
this, "loggedStreams", {}, "MessageStream sources we want to dump into a logfile"}

Definition at line 183 of file MessageSvc.h.

◆ m_messageMap

MessageMap MessageSvc::m_messageMap
private

Message map.

Definition at line 189 of file MessageSvc.h.

◆ m_messageMapMutex

std::recursive_mutex MessageSvc::m_messageMapMutex
mutableprivate

Mutex to synchronize multiple access to m_messageMap.

Definition at line 222 of file MessageSvc.h.

◆ m_msgCount

std::array<int, MSG::NUM_LEVELS> MessageSvc::m_msgCount
private

Definition at line 204 of file MessageSvc.h.

◆ m_msgLimit

std::array<Gaudi::Property<int>, MSG::NUM_LEVELS> MessageSvc::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 165 of file MessageSvc.h.

◆ m_reportMutex

std::recursive_mutex MessageSvc::m_reportMutex
mutableprivate

Mutex to synchronize multiple threads printing.

Definition at line 219 of file MessageSvc.h.

◆ m_sourceMap

std::map<std::string, MsgAry> MessageSvc::m_sourceMap
private

Definition at line 202 of file MessageSvc.h.

◆ m_statLevel

Gaudi::Property<unsigned int> MessageSvc::m_statLevel {this, "statLevel", 0, ""}
private

Definition at line 143 of file MessageSvc.h.

◆ m_stats

Gaudi::Property<bool> MessageSvc::m_stats {this, "showStats", false, ""}
private

Definition at line 142 of file MessageSvc.h.

◆ m_streamMap

StreamMap MessageSvc::m_streamMap
private

Stream map.

Definition at line 188 of file MessageSvc.h.

◆ m_suppress

Gaudi::Property<bool> MessageSvc::m_suppress {this, "enableSuppression", false, ""}
private

Definition at line 174 of file MessageSvc.h.

◆ m_thresholdMap

ThresholdMap MessageSvc::m_thresholdMap
private

Output level threshold map.

Definition at line 190 of file MessageSvc.h.

◆ m_thresholdMapMutex

std::recursive_mutex MessageSvc::m_thresholdMapMutex
mutableprivate

Mutex to synchronize multiple access to m_thresholdMap (.

See also
MsgStream::doOutput).

Definition at line 226 of file MessageSvc.h.

◆ m_thresholdProp

std::array<Gaudi::Property<std::vector<std::string> >, MSG::NUM_LEVELS> MessageSvc::m_thresholdProp
private
Initial value:
{{{},
{this, "setVerbose"},
{this, "setDebug"},
{this, "setInfo"},
{this, "setWarning"},
{this, "setError"},
{this, "setFatal"},
{this, "setAlways"}}}

Definition at line 145 of file MessageSvc.h.

◆ m_tracedInactiveSources

Gaudi::Property<std::vector<std::string> > MessageSvc::m_tracedInactiveSources
private
Initial value:
{
this,
"tracedInactiveSources",
{},
"for each message source specified, print a stack trace for the unprotected and unseen messages"}

Definition at line 177 of file MessageSvc.h.


The documentation for this class was generated from the following files: