62static std::unique_ptr<const std::map<TMVA::EMsgType, std::string> > 
gOwnTypeMap;
 
   63static std::unique_ptr<const std::map<TMVA::EMsgType, std::string> > 
gOwnColorMap;
 
   97     fStrSource ( 
"Unknown" ),
 
 
  109     std::ostringstream(),
 
 
  129   if (&parent != 
this) {
 
 
  145   if (fActiveType == kHEADER)
 
  149   if (fActiveType == kWARNING)
 
 
  166   return static_cast<UInt_t>(fgMaxSourceSize);
 
 
  189   std::string message = this->str();
 
  203      this->WriteMsg( fActiveType, 
msg );
 
 
  221  if ( (
type < fMinType || fgInhibitOutput) && 
type!=kFATAL ) 
return; 
 
  223  std::map<EMsgType, std::string>::const_iterator stype;
 
  225  if ((stype = fgTypeMap.load()->find( 
type )) != fgTypeMap.load()->end()) {
 
  229   if (
type == kHEADER || 
type ==kWARNING)
 
  230     std::cout << fgPrefix << 
line << std::endl;
 
  231   else if (
type == kINFO || 
type == kVERBOSE)
 
  233     std::cout << 
line << std::endl;
 
  236     std::cout << fgColorMap.load()->find( 
type )->second << 
"<" << stype->second << 
">" << 
line << 
"\033[0m" << std::endl;
 
  241   if (
type == kINFO) std::cout << fgPrefix << 
line << std::endl;
 
  242   else               std::cout << fgPrefix << 
"<" << stype->second << 
"> " << 
line << std::endl;
 
  248   if (
type == kFATAL) {
 
  249      std::cout << 
"***> abort program execution" << std::endl;
 
  250      throw std::runtime_error(
"FATAL error");
 
 
  272      std::map<TMVA::EMsgType, std::string>*tmp  = 
new std::map<TMVA::EMsgType, std::string>();
 
  274      (*tmp)[kVERBOSE]  = std::string(
"VERBOSE");
 
  275      (*tmp)[kDEBUG]    = std::string(
"DEBUG");
 
  276      (*tmp)[kINFO]     = std::string(
"INFO");
 
  277      (*tmp)[kWARNING]  = std::string(
"WARNING");
 
  278      (*tmp)[kERROR]    = std::string(
"ERROR");
 
  279      (*tmp)[kFATAL]    = std::string(
"FATAL");
 
  280      (*tmp)[kSILENT]   = std::string(
"SILENT");
 
  281      (*tmp)[kHEADER]   = std::string(
"HEADER");
 
  282      const std::map<TMVA::EMsgType, std::string>* 
expected=0;
 
  283      if(fgTypeMap.compare_exchange_strong(
expected,tmp)) {
 
  293      std::map<TMVA::EMsgType, std::string>*tmp  = 
new std::map<TMVA::EMsgType, std::string>();
 
  295      (*tmp)[kVERBOSE] = std::string(
"");
 
  296      (*tmp)[kDEBUG]   = std::string(
"\033[34m");
 
  297      (*tmp)[kINFO]    = std::string(
"");
 
  298      (*tmp)[kWARNING] = std::string(
"\033[1;31m");
 
  299      (*tmp)[kERROR]   = std::string(
"\033[31m");
 
  300      (*tmp)[kFATAL]   = std::string(
"\033[37;41;1m");
 
  301      (*tmp)[kSILENT]  = std::string(
"\033[30m");
 
  303      const std::map<TMVA::EMsgType, std::string>* 
expected=0;
 
  304      if(fgColorMap.compare_exchange_strong(
expected,tmp)) {
 
 
static std::unique_ptr< const std::map< TMVA::EMsgType, std::string > > gOwnTypeMap
static std::unique_ptr< const std::map< TMVA::EMsgType, std::string > > gOwnColorMap
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
ostringstream derivative to redirect and format output
static const UInt_t fgMaxSourceSize
maximum length of source name
static const std::string fgPrefix
the prefix of the source name
MsgLogger(const TObject *source, EMsgType minType=kINFO)
constructor
MsgLogger & operator=(const MsgLogger &parent)
assignment operator
std::string GetPrintedSource() const
the full logger prefix
std::string fStrSource
alternative string source
static std::atomic< const std::map< EMsgType, std::string > * > fgColorMap
matches output types with terminal colors
static UInt_t GetMaxSourceSize()
returns the maximum source size
static void InhibitOutput()
const TObject * fObjSource
the source TObject (used for name)
static const std::string fgSuffix
suffix following source name
static void EnableOutput()
EMsgType fMinType
minimum type for output
static std::atomic< const std::map< EMsgType, std::string > * > fgTypeMap
matches output types with strings
std::string GetFormattedSource() const
make sure the source name is no longer than fgMaxSourceSize:
void InitMaps()
Create the message type and color maps.
EMsgType fActiveType
active type
void WriteMsg(EMsgType type, const std::string &line) const
putting the output string, the message type, and the color switcher together into a single string
static MsgLogger & Endmsg(MsgLogger &logger)
end line
static std::atomic< Bool_t > fgInhibitOutput
flag to suppress all output
void Send()
activates the logger writer
Mother of all ROOT objects.