pub mod error_report;
#[macro_export]
macro_rules! trace_error {
($error:expr, $($rest:tt)+) => {{
let kind = std::any::type_name_of_val(&$error);
let error_message = format!("{:#}", $error);
let stack = prima_tracing::macros::error_report::Report::new(&$error);
let trace = std::backtrace::Backtrace::force_capture();
$crate::tracing::error!(
error.message = error_message,
error.kind = kind,
error.stack = ?stack,
error.trace = %trace,
$($rest)+
);
}};
}
#[cfg(feature = "anyhow")]
#[macro_export]
macro_rules! trace_anyhow_error {
($error:expr, $($rest:tt)+) => {{
let kind = std::any::type_name_of_val(&$error.root_cause());
let error_message = format!("{:#}", $error);
let std_err: &(dyn std::error::Error + 'static) = $error.as_ref();
let stack = prima_tracing::macros::error_report::Report::new(std_err);
let trace = $error.backtrace();
$crate::tracing::error!(
error.message = error_message,
error.kind = kind,
error.stack = ?stack,
error.trace = %trace,
$($rest)+
);
}};
}