CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
edm::service::ELoutput Class Reference

#include <ELoutput.h>

Inheritance diagram for edm::service::ELoutput:
edm::service::ELdestination

Public Member Functions

 ELoutput ()
 
 ELoutput (std::ostream &os, bool emitAtStart=false)
 
 ELoutput (const std::string &fileName, bool emitAtStart=false)
 
 ELoutput (const ELoutput &orig)
 
bool log (const edm::ErrorObj &msg) override
 
ELoutputoperator= (const ELoutput &orig)=delete
 
 ~ELoutput () override
 
- Public Member Functions inherited from edm::service::ELdestination
 ELdestination ()
 
 ELdestination (const ELdestination &orig)=delete
 
virtual void excludeModule (std::string const &moduleName)
 
virtual void filterModule (std::string const &moduleName)
 
virtual void finish ()
 
virtual int getLineLength () const
 
virtual std::string getNewline () const
 
virtual void ignoreModule (std::string const &moduleName)
 
ELdestinationoperator= (const ELdestination &orig)=delete
 
virtual void respondToModule (std::string const &moduleName)
 
void setInterval (const std::string &s, int interval)
 
void setInterval (const messagelogger::ELseverityLevel &sv, int interval)
 
void setLimit (const std::string &s, int n)
 
void setLimit (const messagelogger::ELseverityLevel &sv, int n)
 
virtual int setLineLength (int len)
 
virtual void setTableLimit (int n)
 
void setThreshold (const messagelogger::ELseverityLevel &sv)
 
void setTimespan (const std::string &s, int n)
 
void setTimespan (const messagelogger::ELseverityLevel &sv, int n)
 
void setTraceThreshold (const messagelogger::ELseverityLevel &sv)
 
virtual bool thisShouldBeIgnored (std::string const &s) const
 
virtual void wipe ()
 
virtual void zero ()
 
virtual ~ELdestination ()
 

Protected Member Functions

void attachEpilogue () override
 
void attachTime () override
 
void changeFile (std::ostream &os) override
 
void changeFile (const std::string &filename) override
 
void emitToken (std::string_view s, bool nl=false)
 
void flush () override
 
void includeContext () override
 
void includeModule () override
 
void includeSerial () override
 
void includeSubroutine () override
 
void includeText () override
 
void includeTime () override
 
void separateEpilogue () override
 
void separateTime () override
 
void suppressContext () override
 
void suppressModule () override
 
void suppressSerial () override
 
void suppressSubroutine () override
 
void suppressText () override
 
void suppressTime () override
 
void useContext () override
 
void useFullContext () override
 

Protected Attributes

int charsOnLine
 
std::shared_ptr< std::ostream > os
 
bool preambleMode
 
bool wantEpilogueSeparate
 
bool wantFullContext
 
bool wantModule
 
bool wantSerial
 
bool wantSomeContext
 
bool wantSubroutine
 
bool wantText
 
bool wantTimeSeparate
 
bool wantTimestamp
 
edm::ELextendedID xid
 
- Protected Attributes inherited from edm::service::ELdestination
bool ignoreMostModules
 
std::unordered_set< std::string > ignoreThese
 
std::string indent
 
ELlimitsTable limits
 
int lineLength
 
std::string newline
 
std::string preamble
 
bool respondToMostModules
 
std::unordered_set< std::string > respondToThese
 
messagelogger::ELseverityLevel threshold
 
messagelogger::ELseverityLevel traceThreshold
 

Additional Inherited Members

- Static Protected Attributes inherited from edm::service::ELdestination
static const int defaultLineLength = 80
 

Detailed Description

Definition at line 43 of file ELoutput.h.

Constructor & Destructor Documentation

◆ ELoutput() [1/4]

edm::service::ELoutput::ELoutput ( )

Definition at line 126 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, and emitToken().

127  : ELdestination(),
128  os(&std::cerr, do_nothing_deleter()),
129  charsOnLine(0),
130  xid(),
131  wantTimestamp(true),
132  wantModule(true),
133  wantSubroutine(true),
134  wantText(true),
135  wantSomeContext(true),
136  wantSerial(false),
137  wantFullContext(false),
138  wantTimeSeparate(false),
139  wantEpilogueSeparate(false),
140  preambleMode(true) // 006 9/2/10 mf
141  {
142 #ifdef ELoutputCONSTRUCTOR_TRACE
143  std::cerr << "Constructor for ELoutput()\n";
144 #endif
145 
146  emitToken("\n=================================================", true);
147  emitToken("\nMessage Log File written by MessageLogger service \n");
148  emitToken("\n=================================================\n", true);
149 
150  } // ELoutput()
edm::ELextendedID xid
Definition: ELoutput.h:97
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ ELoutput() [2/4]

edm::service::ELoutput::ELoutput ( std::ostream &  os,
bool  emitAtStart = false 
)

Definition at line 152 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, emitToken(), and preambleMode.

153  : ELdestination(),
154  os(&os_, do_nothing_deleter()),
155  charsOnLine(0),
156  xid(),
157  wantTimestamp(true),
158  wantModule(true),
159  wantSubroutine(true),
160  wantText(true),
161  wantSomeContext(true),
162  wantSerial(false),
163  wantFullContext(false),
164  wantTimeSeparate(false),
165  wantEpilogueSeparate(false),
166  preambleMode(true) // 006 9/2/10 mf
167  {
168 #ifdef ELoutputCONSTRUCTOR_TRACE
169  std::cerr << "Constructor for ELoutput( os )\n";
170 #endif
171 
172  // Enh 001 2/13/01 mf
173  if (emitAtStart) {
174  preambleMode = true;
175  emitToken("\n=================================================", true);
176  emitToken("\nMessage Log File written by MessageLogger service \n");
177  emitToken("\n=================================================\n", true);
178  }
179 
180  } // ELoutput()
edm::ELextendedID xid
Definition: ELoutput.h:97
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ ELoutput() [3/4]

edm::service::ELoutput::ELoutput ( const std::string &  fileName,
bool  emitAtStart = false 
)

Definition at line 182 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, emitToken(), MillePedeFileConverter_cfg::fileName, os, preambleMode, AlCaHLTBitMon_QueryRunRegistry::string, and protons_cff::time.

183  : ELdestination(),
184  os(new std::ofstream(fileName.c_str(), std::ios /*_base*/ ::app), close_and_delete()),
185  charsOnLine(0),
186  xid(),
187  wantTimestamp(true),
188  wantModule(true),
189  wantSubroutine(true),
190  wantText(true),
191  wantSomeContext(true),
192  wantSerial(false),
193  wantFullContext(false),
194  wantTimeSeparate(false),
195  wantEpilogueSeparate(false),
196  preambleMode(true) // 006 9/2/10 mf
197  {
198 #ifdef ELoutputCONSTRUCTOR_TRACE
199  std::cerr << "Constructor for ELoutput( " << fileName << " )\n";
200 #endif
201 
202  preambleMode = true;
203  if (os && *os) {
204 #ifdef ELoutputCONSTRUCTOR_TRACE
205  std::cerr << " Testing if os is owned\n";
206 #endif
207 #ifdef ELoutputCONSTRUCTOR_TRACE
208  std::cerr << " About to do first emit\n";
209 #endif
210  // Enh 001 2/13/01 mf
211  if (emitAtStart) {
212  emitToken("\n=======================================================", true);
213  emitToken("\nError Log File ");
215  emitToken(" \n");
216  }
217  } else {
218 #ifdef ELoutputCONSTRUCTOR_TRACE
219  std::cerr << " Deleting os\n";
220 #endif
221  os.reset(&std::cerr, do_nothing_deleter());
222 #ifdef ELoutputCONSTRUCTOR_TRACE
223  std::cerr << " about to emit to cerr\n";
224 #endif
225  if (emitAtStart) {
226  emitToken("\n=======================================================", true);
227  emitToken("\n%MSG** Logging to cerr is being substituted");
228  emitToken(" for specified log file \"");
230  emitToken("\" which could not be opened for write or append.\n");
231  }
232  }
233  if (emitAtStart) {
234  std::string const& ftime = formatTime(time(nullptr)); // Change log 7
235  emitToken(ftime, true);
236  emitToken("\n=======================================================\n", true);
237  }
238  // preambleMode = tprm; removed 9/2/10 mf see change log 6
239 
240 #ifdef ELoutputCONSTRUCTOR_TRACE
241  std::cerr << "Constructor for ELoutput completed.\n";
242 #endif
243 
244  } // ELoutput()
edm::ELextendedID xid
Definition: ELoutput.h:97
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ ELoutput() [4/4]

edm::service::ELoutput::ELoutput ( const ELoutput orig)

Definition at line 246 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, edm::service::ELdestination::ignoreMostModules, edm::service::ELdestination::ignoreThese, edm::service::ELdestination::indent, edm::service::ELdestination::limits, edm::service::ELdestination::lineLength, edm::service::ELdestination::newline, edm::service::ELdestination::preamble, edm::service::ELdestination::respondToMostModules, edm::service::ELdestination::respondToThese, edm::service::ELdestination::threshold, and edm::service::ELdestination::traceThreshold.

247  : ELdestination(),
248  os(orig.os),
249  charsOnLine(orig.charsOnLine),
250  xid(orig.xid),
251  wantTimestamp(orig.wantTimestamp),
252  wantModule(orig.wantModule),
253  wantSubroutine(orig.wantSubroutine),
254  wantText(orig.wantText),
255  wantSomeContext(orig.wantSomeContext),
256  wantSerial(orig.wantSerial),
257  wantFullContext(orig.wantFullContext),
258  wantTimeSeparate(orig.wantTimeSeparate),
259  wantEpilogueSeparate(orig.wantEpilogueSeparate),
260  preambleMode(orig.preambleMode) // 006 9/2/10 mf
261  {
262 #ifdef ELoutputCONSTRUCTOR_TRACE
263  std::cerr << "Copy constructor for ELoutput\n";
264 #endif
265 
266  // mf 6/15/01 fix of Bug 005
267  threshold = orig.threshold;
268  traceThreshold = orig.traceThreshold;
269  limits = orig.limits;
270  preamble = orig.preamble;
271  newline = orig.newline;
272  indent = orig.indent;
273  lineLength = orig.lineLength;
274 
275  ignoreMostModules = orig.ignoreMostModules;
276  respondToThese = orig.respondToThese;
277  respondToMostModules = orig.respondToMostModules;
278  ignoreThese = orig.ignoreThese;
279 
280  } // ELoutput()
std::unordered_set< std::string > ignoreThese
edm::ELextendedID xid
Definition: ELoutput.h:97
std::unordered_set< std::string > respondToThese
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95
messagelogger::ELseverityLevel traceThreshold
messagelogger::ELseverityLevel threshold

◆ ~ELoutput()

edm::service::ELoutput::~ELoutput ( )
override

Definition at line 282 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr.

282  {
283 #ifdef ELoutputCONSTRUCTOR_TRACE
284  std::cerr << "Destructor for ELoutput\n";
285 #endif
286 
287  } // ~ELoutput()

Member Function Documentation

◆ attachEpilogue()

void edm::service::ELoutput::attachEpilogue ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 619 of file ELoutput.cc.

References wantEpilogueSeparate.

619 { wantEpilogueSeparate = false; }

◆ attachTime()

void edm::service::ELoutput::attachTime ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 616 of file ELoutput.cc.

References wantTimeSeparate.

616 { wantTimeSeparate = false; }

◆ changeFile() [1/2]

void edm::service::ELoutput::changeFile ( std::ostream &  os)
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 625 of file ELoutput.cc.

References emitToken(), os, AlCaHLTBitMon_QueryRunRegistry::string, and protons_cff::time.

625  {
626  os.reset(&os_, do_nothing_deleter());
627  emitToken("\n=======================================================", true);
628  emitToken("\nError Log changed to this stream\n");
629  std::string const& ftime = formatTime(time(nullptr)); // Change log 7
630  emitToken(ftime, true);
631  emitToken("\n=======================================================\n", true);
632  }
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ changeFile() [2/2]

void edm::service::ELoutput::changeFile ( const std::string &  filename)
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 634 of file ELoutput.cc.

References emitToken(), corrVsCorr::filename, os, AlCaHLTBitMon_QueryRunRegistry::string, and protons_cff::time.

634  {
635  os.reset(new std::ofstream(filename.c_str(), std::ios /*_base*/ ::app), close_and_delete());
636  emitToken("\n=======================================================", true);
637  emitToken("\nError Log changed to this file\n");
638  std::string const& ftime = formatTime(time(nullptr)); // Change log 7
639  emitToken(ftime, true);
640  emitToken("\n=======================================================\n", true);
641  }
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ emitToken()

void edm::service::ELoutput::emitToken ( std::string_view  s,
bool  nl = false 
)
protected

Definition at line 512 of file ELoutput.cc.

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, charsOnLine, edm::first(), edm::service::ELdestination::indent, dqmdumpme::last, edm::service::ELdestination::lineLength, edm::service::ELdestination::newline, preambleMode, alignCSCRings::s, and edm::second().

Referenced by changeFile(), ELoutput(), and log().

512  {
513 #ifdef ELoutput_EMIT_TRACE
514  std::cerr << "[][][] in emit: charsOnLine is " << charsOnLine << '\n';
515  std::cerr << "[][][] in emit: s.length() " << s.length() << '\n';
516  std::cerr << "[][][] in emit: lineLength is " << lineLength << '\n';
517 #endif
518 
519  if (s.length() == 0) {
520  if (nl) {
521  (*os) << newline << std::flush;
522  charsOnLine = 0;
523  }
524  return;
525  }
526 
527  char first = s[0];
528  char second, last, last2;
529  second = (s.length() < 2) ? '\0' : s[1];
530  last = (s.length() < 2) ? '\0' : s[s.length() - 1];
531  last2 = (s.length() < 3) ? '\0' : s[s.length() - 2];
532  //checking -2 because the very last char is sometimes a ' ' inserted
533  //by ErrorLog::operator<<
534 
535  if (preambleMode) {
536  //Accounts for newline @ the beginning of the ELstring JV:2
537  if (first == '\n' || (charsOnLine + static_cast<int>(s.length())) > lineLength) {
538 #ifdef ELoutput_EMIT_TRACE
539  std::cerr << "[][][] in emit: about to << to *os \n";
540 #endif
541 #ifdef HEADERS_BROKEN_INTO_LINES_AND_INDENTED
542  // Change log 3: Removed this code 6/11/07 mf
543  (*os) << newline << indent;
544  charsOnLine = indent.length();
545 #else
546  charsOnLine = 0; // Change log 5
547 #endif
548  if (second != ' ') {
549  (*os) << ' ';
550  charsOnLine++;
551  }
552  if (first == '\n') {
553  (*os) << s.substr(1);
554  } else {
555  (*os) << s;
556  }
557  }
558 #ifdef ELoutput_EMIT_TRACE
559  std::cerr << "[][][] in emit: about to << s to *os: " << s << " \n";
560 #endif
561  else {
562  (*os) << s;
563  }
564 
565  if (last == '\n' || last2 == '\n') { //accounts for newline @ end $$ JV:2
566  (*os) << indent; //of the ELstring
567  if (last != ' ')
568  (*os) << ' ';
569  charsOnLine = indent.length() + 1;
570  }
571 
572  if (nl) {
573  (*os) << newline << std::flush;
574  charsOnLine = 0;
575  } else {
576  charsOnLine += s.length();
577  }
578  }
579 
580  if (!preambleMode) {
581  (*os) << s;
582  }
583 
584 #ifdef ELoutput_EMIT_TRACE
585  std::cerr << "[][][] in emit: completed \n";
586 #endif
587 
588  } // emitToken()
U second(std::pair< T, U > const &p)
T first(std::pair< T, U > const &p)

◆ flush()

void edm::service::ELoutput::flush ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 643 of file ELoutput.cc.

References os.

Referenced by log().

643 { os->flush(); }
std::shared_ptr< std::ostream > os
Definition: ELoutput.h:95

◆ includeContext()

void edm::service::ELoutput::includeContext ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 606 of file ELoutput.cc.

References wantSomeContext.

606 { wantSomeContext = true; }

◆ includeModule()

void edm::service::ELoutput::includeModule ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 597 of file ELoutput.cc.

References wantModule.

597 { wantModule = true; }

◆ includeSerial()

void edm::service::ELoutput::includeSerial ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 610 of file ELoutput.cc.

References wantSerial.

610 { wantSerial = true; }

◆ includeSubroutine()

void edm::service::ELoutput::includeSubroutine ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 600 of file ELoutput.cc.

References wantSubroutine.

600 { wantSubroutine = true; }

◆ includeText()

void edm::service::ELoutput::includeText ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 603 of file ELoutput.cc.

References wantText.

603 { wantText = true; }

◆ includeTime()

void edm::service::ELoutput::includeTime ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 594 of file ELoutput.cc.

References wantTimestamp.

594 { wantTimestamp = true; }

◆ log()

bool edm::service::ELoutput::log ( const edm::ErrorObj msg)
overridevirtual

Reimplemented from edm::service::ELdestination.

Definition at line 296 of file ELoutput.cc.

References edm::service::ELlimitsTable::add(), cms::cuda::assert(), EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, charsOnLine, edm::ELdebug, edm::ELsevere, emitToken(), flush(), edm::messagelogger::ELseverityLevel::getSymbol(), edm::ELextendedID::id, edm::service::ELdestination::limits, edm::ELextendedID::module, mps_check::msg, edm::service::ELdestination::newline, edm::service::ELdestination::preamble, preambleMode, alignCSCRings::s, edm::ELextendedID::severity, AlCaHLTBitMon_QueryRunRegistry::string, edm::ELextendedID::subroutine, edm::service::ELdestination::thisShouldBeIgnored(), edm::service::ELdestination::threshold, edm::service::ELdestination::traceThreshold, wantEpilogueSeparate, wantFullContext, wantModule, wantSerial, wantSomeContext, wantSubroutine, wantText, wantTimeSeparate, wantTimestamp, and xid.

296  {
297 #ifdef ELoutputTRACE_LOG
298  std::cerr << " =:=:=: Log to an ELoutput \n";
299 #endif
300 
301  xid = msg.xid(); // Save the xid.
302 
303 #ifdef THRESHTRACE
304  std::cerr << " =:=:=: Log to an ELoutput \n"
305  << " severity = " << xid.severity << "\n"
306  << " threshold = " << threshold << "\n"
307  << " id = " << xid.id << "\n";
308 #endif
309 
310  // See if this message is to be acted upon, and add it to limits table
311  // if it was not already present:
312  //
313  if (xid.severity < threshold)
314  return false;
315  if (thisShouldBeIgnored(xid.module) && (xid.severity < ELsevere) /* change log 2 */)
316  return false;
317  if (!limits.add(xid) && (xid.severity < ELsevere) /* change log 2 */)
318  return false;
319 
320 #ifdef ELoutputTRACE_LOG
321  std::cerr << " =:=:=: Limits table work done \n";
322 #endif
323 
324  // Output the prologue:
325  //
326  preambleMode = true;
327 
328  if (!msg.is_verbatim()) {
329  charsOnLine = 0; // Change log 5
332  emitToken(" ");
333  emitToken(xid.id);
334  emitToken(msg.idOverflow());
335  emitToken(": ");
336  }
337 
338 #ifdef ELoutputTRACE_LOG
339  std::cerr << " =:=:=: Prologue done \n";
340 #endif
341  // Output serial number of message:
342  //
343  if (!msg.is_verbatim()) {
344  if (wantSerial) {
345  std::ostringstream s;
346  s << msg.serial();
347  emitToken("[serial #" + s.str() + "] ");
348  }
349  }
350 
351 #ifdef OUTPUT_FORMATTED_ERROR_MESSAGES
352  // Output each item in the message (before the epilogue):
353  //
354  if (wantText) {
355  ELlist_string::const_iterator it;
356  for (it = msg.items().begin(); it != msg.items().end(); ++it) {
357 #ifdef ELoutputTRACE_LOG
358  std::cerr << " =:=:=: Item: " << *it << '\n';
359 #endif
360  emitToken(*it);
361  }
362  }
363 #endif
364 
365  // Provide further identification:
366  //
367  bool needAspace = true;
368  if (!msg.is_verbatim()) {
369  if (wantEpilogueSeparate) {
370  if (xid.module.length() + xid.subroutine.length() > 0) {
371  emitToken("\n");
372  needAspace = false;
373  } else if (wantTimestamp && !wantTimeSeparate) {
374  emitToken("\n");
375  needAspace = false;
376  }
377  }
378  if (wantModule && (xid.module.length() > 0)) {
379  if (needAspace) {
380  emitToken(" ");
381  needAspace = false;
382  }
383  emitToken(xid.module + " ");
384  }
385  if (wantSubroutine && (xid.subroutine.length() > 0)) {
386  if (needAspace) {
387  emitToken(" ");
388  needAspace = false;
389  }
390  emitToken(xid.subroutine + "() ");
391  }
392  }
393 
394 #ifdef ELoutputTRACE_LOG
395  std::cerr << " =:=:=: Module and Subroutine done \n";
396 #endif
397 
398  // Provide time stamp:
399  //
400  if (!msg.is_verbatim()) {
401  if (wantTimestamp) {
402  if (wantTimeSeparate) {
403  emitToken("\n");
404  needAspace = false;
405  }
406  if (needAspace) {
407  emitToken(" ");
408  needAspace = false;
409  }
410  std::string const& ftime = formatTime(msg.timestamp()); // Change log 7
411  emitToken(ftime + " ");
412  }
413  }
414 
415 #ifdef ELoutputTRACE_LOG
416  std::cerr << " =:=:=: TimeStamp done \n";
417 #endif
418 
419  // Provide the context information:
420  //
421  if (!msg.is_verbatim()) {
422  if (wantSomeContext) {
423  if (needAspace) {
424  emitToken(" ");
425  needAspace = false;
426  }
427  assert(!needAspace);
428  if (wantFullContext) {
429  emitToken(msg.context());
430 #ifdef ELoutputTRACE_LOG
431  std::cerr << " =:=:=: fullContext done: \n";
432 #endif
433  } else {
434  emitToken(msg.context());
435 #ifdef ELoutputTRACE_LOG
436  std::cerr << " =:=:=: Context done: \n";
437 #endif
438  }
439  }
440  }
441 
442  // Provide traceback information:
443  //
444 
445  bool insertNewlineAfterHeader = (msg.xid().severity != ELdebug);
446  // ELdebug is what LogDebug issues
447 
448  if (!msg.is_verbatim()) {
449  if (msg.xid().severity >= traceThreshold) {
450  emitToken("\n", insertNewlineAfterHeader);
451  } else { //else statement added JV:1
452  emitToken("", insertNewlineAfterHeader);
453  }
454  }
455 #ifdef ELoutputTRACE_LOG
456  std::cerr << " =:=:=: Trace routine done: \n";
457 #endif
458 
459 #ifndef OUTPUT_FORMATTED_ERROR_MESSAGES
460  // Finally, output each item in the message:
461  //
462  preambleMode = false;
463  if (wantText) {
464  ELlist_string::const_iterator it;
465  int item_count = 0;
466  for (it = msg.items().begin(); it != msg.items().end(); ++it) {
467 #ifdef ELoutputTRACE_LOG
468  std::cerr << " =:=:=: Item: " << *it << '\n';
469 #endif
470  ++item_count;
471  if (!msg.is_verbatim()) {
472  if (!insertNewlineAfterHeader && (item_count == 3)) {
473  // in a LogDebug message, the first 3 items are FILE, :, and LINE
474  emitToken(*it, true);
475  } else {
476  emitToken(*it);
477  }
478  } else {
479  emitToken(*it);
480  }
481  }
482  }
483 #endif
484 
485  // And after the message, add a %MSG on its own line
486  // Change log 4 6/11/07 mf
487 
488  if (!msg.is_verbatim()) {
489  emitToken("\n%MSG");
490  }
491 
492  // Done; message has been fully processed; separate, flush, and leave
493  //
494 
495  (*os) << newline;
496  flush();
497 
498 #ifdef ELoutputTRACE_LOG
499  std::cerr << " =:=:=: log(msg) done: \n";
500 #endif
501 
502  return true;
503 
504  } // log()
messagelogger::ELseverityLevel severity
Definition: ELextendedID.h:30
assert(be >=bs)
edm::ELextendedID xid
Definition: ELoutput.h:97
constexpr const ELseverityLevel ELsevere
std::string module
Definition: ELextendedID.h:31
void flush() override
Definition: ELoutput.cc:643
bool add(const ELextendedID &xid)
void emitToken(std::string_view s, bool nl=false)
Definition: ELoutput.cc:512
std::string id
Definition: ELextendedID.h:29
tuple msg
Definition: mps_check.py:286
std::string subroutine
Definition: ELextendedID.h:32
virtual bool thisShouldBeIgnored(std::string const &s) const
messagelogger::ELseverityLevel traceThreshold
messagelogger::ELseverityLevel threshold
constexpr const ELseverityLevel ELdebug
const std::string & getSymbol() const

◆ operator=()

ELoutput& edm::service::ELoutput::operator= ( const ELoutput orig)
delete

◆ separateEpilogue()

void edm::service::ELoutput::separateEpilogue ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 618 of file ELoutput.cc.

References wantEpilogueSeparate.

618 { wantEpilogueSeparate = true; }

◆ separateTime()

void edm::service::ELoutput::separateTime ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 615 of file ELoutput.cc.

References wantTimeSeparate.

615 { wantTimeSeparate = true; }

◆ suppressContext()

void edm::service::ELoutput::suppressContext ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 607 of file ELoutput.cc.

References wantSomeContext.

607 { wantSomeContext = false; }

◆ suppressModule()

void edm::service::ELoutput::suppressModule ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 598 of file ELoutput.cc.

References wantModule.

598 { wantModule = false; }

◆ suppressSerial()

void edm::service::ELoutput::suppressSerial ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 609 of file ELoutput.cc.

References wantSerial.

609 { wantSerial = false; }

◆ suppressSubroutine()

void edm::service::ELoutput::suppressSubroutine ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 601 of file ELoutput.cc.

References wantSubroutine.

601 { wantSubroutine = false; }

◆ suppressText()

void edm::service::ELoutput::suppressText ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 604 of file ELoutput.cc.

References wantText.

604 { wantText = false; }

◆ suppressTime()

void edm::service::ELoutput::suppressTime ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 595 of file ELoutput.cc.

References wantTimestamp.

595 { wantTimestamp = false; }

◆ useContext()

void edm::service::ELoutput::useContext ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 613 of file ELoutput.cc.

References wantFullContext.

613 { wantFullContext = false; }

◆ useFullContext()

void edm::service::ELoutput::useFullContext ( )
overrideprotectedvirtual

Reimplemented from edm::service::ELdestination.

Definition at line 612 of file ELoutput.cc.

References wantFullContext.

612 { wantFullContext = true; }

Member Data Documentation

◆ charsOnLine

int edm::service::ELoutput::charsOnLine
protected

Definition at line 96 of file ELoutput.h.

Referenced by emitToken(), and log().

◆ os

std::shared_ptr<std::ostream> edm::service::ELoutput::os
protected

Definition at line 95 of file ELoutput.h.

Referenced by changeFile(), ELoutput(), and flush().

◆ preambleMode

bool edm::service::ELoutput::preambleMode
protected

Definition at line 99 of file ELoutput.h.

Referenced by ELoutput(), emitToken(), and log().

◆ wantEpilogueSeparate

bool edm::service::ELoutput::wantEpilogueSeparate
protected

Definition at line 99 of file ELoutput.h.

Referenced by attachEpilogue(), log(), and separateEpilogue().

◆ wantFullContext

bool edm::service::ELoutput::wantFullContext
protected

Definition at line 99 of file ELoutput.h.

Referenced by log(), useContext(), and useFullContext().

◆ wantModule

bool edm::service::ELoutput::wantModule
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeModule(), log(), and suppressModule().

◆ wantSerial

bool edm::service::ELoutput::wantSerial
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeSerial(), log(), and suppressSerial().

◆ wantSomeContext

bool edm::service::ELoutput::wantSomeContext
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeContext(), log(), and suppressContext().

◆ wantSubroutine

bool edm::service::ELoutput::wantSubroutine
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeSubroutine(), log(), and suppressSubroutine().

◆ wantText

bool edm::service::ELoutput::wantText
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeText(), log(), and suppressText().

◆ wantTimeSeparate

bool edm::service::ELoutput::wantTimeSeparate
protected

Definition at line 99 of file ELoutput.h.

Referenced by attachTime(), log(), and separateTime().

◆ wantTimestamp

bool edm::service::ELoutput::wantTimestamp
protected

Definition at line 99 of file ELoutput.h.

Referenced by includeTime(), log(), and suppressTime().

◆ xid

edm::ELextendedID edm::service::ELoutput::xid
protected

Definition at line 97 of file ELoutput.h.

Referenced by log().