14#define FIELD_SEPARATOR "\n\t"
17template <
class Device>
20template <
class Device>
40template <
class Device>
44 std::string first_token = param.substr( 0, param.find(
',' ) );
45 std::map<std::string,ers::format::Token>::iterator it =
s_supported_fields.find( first_token );
52template <
class Device>
56 std::string first_token = param.substr( 0, param.find(
',' ) );
57 std::map<std::string,ers::format::Token>::iterator it =
s_supported_fields.find( first_token );
61 return param.substr( first_token.size() < param.size() ? first_token.size() + 1 : param.size() );
64template <
class Device>
71 size_t index = std::string::npos;
74 std::string token = format.substr(
offset, index -
offset );
75 std::map<std::string,ers::format::Token>::iterator it =
s_supported_fields.find( token );
79 offset += token.size() + 1;
80 }
while ( index != std::string::npos );
83template <
class Device>
87 for (
size_t i = 0; i < m_tokens.size(); i++ )
89 switch ( m_tokens[i] )
95 out << issue.
time<std::chrono::microseconds>() <<
" ";
112 for ( ers::string_map::const_iterator it = issue.
parameters().begin(); it != issue.
parameters().end(); ++it )
114 out <<
"'" << it->first <<
"=" << it->second <<
"' ";
121 for ( std::vector<std::string>::const_iterator it = issue.
qualifiers().begin(); it != issue.
qualifiers().end(); ++it )
123 out <<
"'" << *it <<
"' ";
153 std::vector<std::string> stack = issue.
context().
stack();
154 for(
size_t i = 0; i < stack.size(); i++ )
156 out <<
FIELD_SEPARATOR <<
"#" << std::setw(3) << std::left << i << stack[i];
164 report( out, *issue.
cause() );
175template <
class Device>
179 report( device().stream(), issue );
180 chained().write( issue );
virtual int line_number() const =0
virtual const char * user_name() const =0
virtual int user_id() const =0
virtual pid_t thread_id() const =0
virtual const char * host_name() const =0
std::string position(int verbosity=ers::Configuration::instance().verbosity_level()) const
virtual pid_t process_id() const =0
virtual const char * cwd() const =0
std::vector< std::string > stack() const
virtual const char * function_name() const =0
Base class for any user define issue.
const Context & context() const
Context of the issue.
ers::Severity severity() const
severity of the issue
const std::vector< std::string > & qualifiers() const
return array of qualifiers
const std::string & message() const
General cause of the issue.
const string_map & parameters() const
return array of parameters
std::string time(const std::string &format="%Y-%b-%d %H:%M:%S", bool isUTC=false) const
string representation of local time of the issue
const Issue * cause() const
return the cause Issue of this Issue
std::string to_string(severity s)