20 #include <boost/system/error_code.hpp>
27 #include <string_view>
30 namespace diagnostics {
85 timestamp(std::chrono::system_clock::now()),
93 const boost::system::error_code& ec,
bool retry =
false)
100 timestamp(std::chrono::system_clock::now()),
108 auto time_t = std::chrono::system_clock::to_time_t(
timestamp);
109 auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
timestamp.time_since_epoch()) % 1000;
112 #if defined(_MSC_VER)
113 localtime_s(&tm_buf, &time_t);
115 localtime_r(&time_t, &tm_buf);
118 std::ostringstream oss;
119 oss << std::put_time(&tm_buf,
"%Y-%m-%d %H:%M:%S");
120 oss <<
'.' << std::setfill(
'0') << std::setw(3) << ms.count();
149 return "COMMUNICATION";
151 return "CONFIGURATION";
166 std::ostringstream oss;
174 oss <<
" [RETRYABLE, count: " <<
retry_count <<
"]";
205 first_error = std::chrono::system_clock::time_point{};
206 last_error = std::chrono::system_clock::time_point{};
216 return duration > 0 ?
static_cast<double>(
total_errors) /
static_cast<double>(duration) : 0.0;
ErrorCategory
Error categories for classification.
ErrorLevel
Error severity levels.
Comprehensive error information structure.
std::string get_summary() const
Get formatted error summary.
ErrorInfo(ErrorLevel l, ErrorCategory c, std::string_view comp, std::string_view op, std::string_view msg)
Constructor for basic error info.
std::chrono::system_clock::time_point timestamp
boost::system::error_code boost_error
ErrorInfo(ErrorLevel l, ErrorCategory c, std::string_view comp, std::string_view op, std::string_view msg, const boost::system::error_code &ec, bool retry=false)
Constructor with Boost error code.
std::string get_timestamp_string() const
Get formatted timestamp string.
std::string get_level_string() const
Get error level as string.
std::string get_category_string() const
Get error category as string.
Error statistics for monitoring.
std::chrono::system_clock::time_point first_error
size_t errors_by_level[4]
double get_error_rate() const
Get error rate (errors per minute)
void reset()
Reset all statistics.
size_t successful_retries
std::chrono::system_clock::time_point last_error
size_t errors_by_category[6]