MsPASS C++ API  2.4.4.dev114+gf4c3cfaca
Defines the C++ API for MsPASS
Loading...
Searching...
No Matches
ErrorLogger.h
1#ifndef _ERROR_LOGGER_H_
2#define _ERROR_LOGGER_H_
3#include "mspass/utility/ErrorLogger.h"
4#include "mspass/utility/MsPASSError.h"
5#include <boost/archive/basic_archive.hpp>
6#include <boost/archive/text_iarchive.hpp>
7#include <boost/archive/text_oarchive.hpp>
8#include <boost/serialization/list.hpp>
9#include <boost/serialization/serialization.hpp>
10#include <list>
11#include <unistd.h>
12namespace mspass {
13namespace utility {
15class LogData {
16public:
17 int job_id;
18 int p_id;
19 std::string algorithm;
20 mspass::utility::ErrorSeverity badness;
21 std::string message;
23 LogData() {};
30 LogData(const int jid, const std::string alg,
39 LogData(const int jid, const std::string alg, const std::string msg,
40 const mspass::utility::ErrorSeverity lvl);
42 friend std::ostream &operator<<(std::ostream &, LogData &);
43
44private:
45 friend boost::serialization::access;
46 template <class Archive>
47 void serialize(Archive &ar, const unsigned int version) {
48 ar & job_id;
49 ar & p_id;
50 ar & algorithm;
51 ar & badness;
52 ar & message;
53 };
54};
64public:
65 ErrorLogger() { job_id = 0; };
69 ErrorLogger(int job) { job_id = job; };
75 ErrorLogger(int job, const std::list<LogData> &messages)
76 : job_id(job), allmessages(messages) {};
80 ErrorLogger(const ErrorLogger &parent);
84 void set_job_id(int jid) { job_id = jid; };
86 int get_job_id() { return job_id; };
108 int log_error(const std::string alg, const std::string mess,
109 const mspass::utility::ErrorSeverity level);
110
118 int log_verbose(const std::string alg, const std::string mess);
120 std::list<LogData> get_error_log() const { return allmessages; };
122 int size() const { return allmessages.size(); };
124 void clear() { allmessages.clear(); };
129 ErrorLogger &operator=(const ErrorLogger &parent);
132 ErrorLogger &operator+=(const ErrorLogger &parent);
134 std::list<LogData> worst_errors() const;
135
136private:
137 int job_id;
138 std::list<LogData> allmessages;
139 friend boost::serialization::access;
140 template <class Archive>
141 void serialize(Archive &ar, const unsigned int version) {
142 ar & job_id;
143 ar & allmessages;
144 };
145};
146
159template <typename Tdata> bool data_are_valid(const Tdata &d) {
160 if (d.dead())
161 return false;
162 std::list<LogData> welog;
163 welog = d.elog.worst_errors();
164 /*The return will be empty if there are no errors logged*/
165 if (welog.size() <= 0)
166 return true;
167 LogData ld;
168 /* Worst errors can return a list of multiple entries. For
169 fatal or invalid id should never be more than one, but this is
170 a clean way to extract the first member of the list if it isn't empty*/
171 ld = *(welog.begin());
172 if (ld.badness == ErrorSeverity::Fatal ||
173 ld.badness == ErrorSeverity::Invalid)
174 return false;
175 else
176 return true;
177}
178} // namespace utility
179} // namespace mspass
180#endif
Container to hold error logs for a data object.
Definition ErrorLogger.h:63
ErrorLogger & operator=(const ErrorLogger &parent)
Definition ErrorLogger.cc:56
int size() const
Definition ErrorLogger.h:122
int get_job_id()
Definition ErrorLogger.h:86
std::list< LogData > get_error_log() const
Definition ErrorLogger.h:120
ErrorLogger(int job, const std::list< LogData > &messages)
Definition ErrorLogger.h:75
ErrorLogger & operator+=(const ErrorLogger &parent)
Definition ErrorLogger.cc:63
int log_verbose(const std::string alg, const std::string mess)
Log a verbose message marking it informational.
Definition ErrorLogger.cc:84
ErrorLogger(int job)
Definition ErrorLogger.h:69
std::list< LogData > worst_errors() const
Definition ErrorLogger.cc:96
int log_error(const mspass::utility::MsPASSError &merr)
Definition ErrorLogger.cc:72
void set_job_id(int jid)
Definition ErrorLogger.h:84
void clear()
Definition ErrorLogger.h:124
One error-log record with provenance and severity.
Definition ErrorLogger.h:15
mspass::utility::ErrorSeverity badness
Definition ErrorLogger.h:20
friend std::ostream & operator<<(std::ostream &, LogData &)
int job_id
Definition ErrorLogger.h:17
std::string algorithm
Definition ErrorLogger.h:19
LogData()
Definition ErrorLogger.h:23
int p_id
Definition ErrorLogger.h:18
std::string message
Definition ErrorLogger.h:21
Base class for error object thrown by MsPASS library routines.
Definition MsPASSError.h:38