27#include <boost/algorithm/string.hpp>
29#define FIELD_SEPARATOR "\n\t"
32std::function<std::string(
const ers::Issue& issue)>
39 static const bool isUTC = ::getenv(
"DUNEDAQ_ERS_TIMESTAMP_UTC");
41 if (boost::algorithm::ifind_first(precision,
"NANO")) {
42 return [](
const ers::Issue& issue) {
return issue.
time<std::chrono::nanoseconds>(format, isUTC); };
45 if (boost::algorithm::ifind_first(precision,
"MICRO")) {
46 return [](
const ers::Issue& issue) {
return issue.
time<std::chrono::microseconds>(format, isUTC); };
49 if (boost::algorithm::ifind_first(precision,
"MILLI")) {
50 return [](
const ers::Issue& issue) {
return issue.
time<std::chrono::milliseconds>(format, isUTC); };
53 return [](
const ers::Issue& issue) {
return issue.
time(format, isUTC); };
56const auto formatted_time = getTimeFormatter();
62 print(out, issue, verbosity);
71 out << formatted_time(issue) <<
" ";
86 for (ers::string_map::const_iterator it = issue.
parameters().begin(); it != issue.
parameters().end(); ++it) {
87 out <<
"'" << it->first <<
"=" << it->second <<
"' ";
91 for (std::vector<std::string>::const_iterator it = issue.
qualifiers().begin(); it != issue.
qualifiers().end();
93 out <<
"'" << *it <<
"' ";
105 std::ios_base::fmtflags flags(out.flags());
108 std::vector<std::string> stack = issue.
context().
stack();
110 for (
size_t i = 0; i < stack.size(); i++) {
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
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
int read_from_environment(const char *name, int default_value)
std::string to_string(severity s)
static std::ostream & print(std::ostream &out, const Issue &issue, int verbosity)
static std::ostream & println(std::ostream &out, const Issue &issue, int verbosity)