pub use apollo_proc_macros::{log_every_n, log_every_n_ms};
use tracing::{debug, error, info, trace, warn};
#[cfg(test)]
#[path = "tracing_test.rs"]
mod tracing_test;
pub struct CustomLogger {
level: TraceLevel,
base_message: Option<String>,
}
impl CustomLogger {
pub fn new(level: TraceLevel, base_message: Option<String>) -> Self {
Self { level, base_message }
}
pub fn log_message(&self, message: &str) {
let message = match &self.base_message {
Some(base_message) => format!("{base_message}: {message}"),
None => message.to_string(),
};
match self.level {
TraceLevel::Trace => trace!(message),
TraceLevel::Debug => debug!(message),
TraceLevel::Info => info!(message),
TraceLevel::Warn => warn!(message),
TraceLevel::Error => error!(message),
}
}
}
#[derive(Clone, Copy)]
pub enum TraceLevel {
Trace,
Debug,
Info,
Warn,
Error,
}
pub trait LogCompatibleToStringExt: std::fmt::Display {
fn log_compatible_to_string(&self) -> String {
self.to_string().replace('\n', "\t")
}
}
#[macro_export]
macro_rules! info_every_n {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n!(::tracing::info, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! warn_every_n {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n!(::tracing::warn, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! error_every_n {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n!(::tracing::error, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! debug_every_n {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n!(::tracing::debug, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! trace_every_n {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n!(::tracing::trace, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! info_every_n_ms {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n_ms!(::tracing::info, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! warn_every_n_ms {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n_ms!(::tracing::warn, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! error_every_n_ms {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n_ms!(::tracing::error, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! debug_every_n_ms {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n_ms!(::tracing::debug, $n, $($arg)*);
}
};
}
#[macro_export]
macro_rules! trace_every_n_ms {
($n:expr, $($arg:tt)*) => {
{
$crate::_apollo_proc_macros::log_every_n_ms!(::tracing::trace, $n, $($arg)*);
}
};
}