DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ers::StandardStreamOutput Struct Reference

#include <StandardStreamOutput.hpp>

Inheritance diagram for ers::StandardStreamOutput:
[legend]

Static Public Member Functions

static std::ostream & print (std::ostream &out, const Issue &issue, int verbosity)
static std::ostream & println (std::ostream &out, const Issue &issue, int verbosity)

Detailed Description

This class provides a namespace for the functions that can be used to print ERS issues to a standard C++ output stream.

Author
Serguei Kolos
Version
1.0

Definition at line 40 of file StandardStreamOutput.hpp.

Member Function Documentation

◆ print()

std::ostream & ers::StandardStreamOutput::print ( std::ostream & out,
const Issue & issue,
int verbosity )
static

Definition at line 78 of file StandardStreamOutput.cpp.

79{
80 if ( verbosity > -3 )
81 {
82 out << formatted_time( issue ) << " ";
83 }
84
85 if ( verbosity > -2 )
86 {
87 out << ers::to_string( issue.severity() ) << " ";
88 }
89
90 if ( verbosity > -1 )
91 {
92 out << "[" << issue.context().position( verbosity ) << "] ";
93 }
94
95 out << issue.message();
96
97 if ( verbosity > 1 )
98 {
99 out << FIELD_SEPARATOR << "Parameters = ";
100 for ( ers::string_map::const_iterator it = issue.parameters().begin(); it != issue.parameters().end(); ++it )
101 {
102 out << "'" << it->first << "=" << it->second << "' ";
103 }
104
105 out << FIELD_SEPARATOR << "Qualifiers = ";
106 for ( std::vector<std::string>::const_iterator it = issue.qualifiers().begin(); it != issue.qualifiers().end(); ++it )
107 {
108 out << "'" << *it << "' ";
109 }
110 }
111
112 if ( verbosity > 2 )
113 {
114 out << FIELD_SEPARATOR << "host = " << issue.context().host_name()
115 << FIELD_SEPARATOR << "user = " << issue.context().user_name()
116 << " (" << issue.context().user_id() << ")"
117 << FIELD_SEPARATOR << "process id = " << issue.context().process_id()
118 << FIELD_SEPARATOR << "thread id = " << issue.context().thread_id()
119 << FIELD_SEPARATOR << "process wd = " << issue.context().cwd();
120 }
121
122 if ( verbosity > 3 )
123 {
124 std::ios_base::fmtflags flags( out.flags() );
125
126 out << std::left;
127 std::vector<std::string> stack = issue.context().stack();
128 out << FIELD_SEPARATOR << "stack trace of the crashing thread:";
129 for( size_t i = 0; i < stack.size(); i++ )
130 {
131 out << FIELD_SEPARATOR << " #" << std::setw(3) << i << stack[i];
132 }
133 // restore the original state
134 out.flags( flags );
135 }
136
137 if ( issue.cause() )
138 {
139 out << FIELD_SEPARATOR << "was caused by: " << *issue.cause();
140 }
141
142 return out;
143}
#define FIELD_SEPARATOR
FELIX Initialization std::string initerror FELIX queue timed out
std::string to_string(severity s)

◆ println()

std::ostream & ers::StandardStreamOutput::println ( std::ostream & out,
const Issue & issue,
int verbosity )
static

Definition at line 70 of file StandardStreamOutput.cpp.

71{
72 print( out, issue, verbosity );
73 out << std::endl;
74 return out;
75}
static std::ostream & print(std::ostream &out, const Issue &issue, int verbosity)

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