use metrics::counter;
pub mod component {
pub const SUPERVISOR: &str = "supervisor";
pub const NOTIFICATIONS: &str = "notifications";
pub const AUTO_TOPUP: &str = "auto_topup";
pub const WEBHOOK_DISPATCH: &str = "webhook_dispatch";
pub const LEADER_ELECTION: &str = "leader_election";
pub const CONFIG_WATCHER: &str = "config_watcher";
pub const PROBE_SCHEDULER: &str = "probe_scheduler";
pub const TASK_WORKER: &str = "task_worker";
pub const ONWARDS_SYNC: &str = "onwards_sync";
pub const ONWARDS_HEARTBEAT: &str = "onwards_heartbeat";
pub const ANALYTICS: &str = "analytics";
pub const ANALYTICS_BATCHER: &str = "analytics_batcher";
pub const RESPONSES_WRITER: &str = "responses_writer";
pub const BATCH_POPULATE: &str = "batch_populate";
pub const PAYMENTS: &str = "payments";
}
pub fn record(component: &'static str, reason: &'static str, severity: &'static str) {
counter!(
"dwctl_background_errors_total",
"component" => component,
"reason" => reason,
"severity" => severity
)
.increment(1);
}
#[macro_export]
macro_rules! background_error {
($component:expr, $reason:expr, Critical, $($arg:tt)+) => {{
$crate::metrics::errors::record($component, $reason, "critical");
::tracing::error!(component = $component, reason = $reason, $($arg)+);
}};
($component:expr, $reason:expr, Error, $($arg:tt)+) => {{
$crate::metrics::errors::record($component, $reason, "error");
::tracing::error!(component = $component, reason = $reason, $($arg)+);
}};
($component:expr, $reason:expr, Warning, $($arg:tt)+) => {{
$crate::metrics::errors::record($component, $reason, "warning");
::tracing::warn!(component = $component, reason = $reason, $($arg)+);
}};
}