use crate::pxconfig::PXConfig;
use lazy_static::lazy_static;
use std::sync::atomic::AtomicBool;
use std::sync::Mutex;
#[derive(Default)]
pub struct PXLogger {
pub px_app_id: Option<String>,
}
lazy_static! {
pub static ref PX_LOG: Mutex<Option<PXLogger>> = Mutex::new(None);
pub static ref PX_DEBUG_ENABLED: AtomicBool = AtomicBool::new(false);
}
#[macro_export]
macro_rules! px_debug {
($($arg:tt)*) => {
if $crate::handlers::pxlogger::PX_DEBUG_ENABLED.load(std::sync::atomic::Ordering::Relaxed) {
log::info!(
"[PerimeterX - DEBUG][{}] - {}",
$crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
format!($($arg)*)
);
}
};
}
#[macro_export]
macro_rules! px_info {
($($arg:tt)*) => {
log::info!(
"[PerimeterX - INFO][{}] - {}",
$crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
format!($($arg)*)
);
}
}
#[macro_export]
macro_rules! px_error {
($($arg:tt)*) => {
log::error!(
"[PerimeterX - ERROR][{}] - {}",
$crate::handlers::pxlogger::PX_LOG.lock().unwrap().as_ref().and_then(|l| l.px_app_id.as_deref()).unwrap_or(""),
format!($($arg)*)
);
}
}
impl PXLogger {
pub fn new(conf: &PXConfig) -> Self {
PX_DEBUG_ENABLED.store(conf.debug, std::sync::atomic::Ordering::Relaxed);
PXLogger {
px_app_id: Some(conf.app_id.to_string()),
}
}
}