use std::cell::RefCell;
thread_local! {
static PLUGIN_LOG: RefCell<Vec<String>> = const { RefCell::new(Vec::new()) };
}
pub fn cradle_log(msg: &str) {
PLUGIN_LOG.with(|log| {
log.borrow_mut().push(msg.to_string());
});
}
pub fn drain_log() -> Vec<String> {
PLUGIN_LOG.with(|log| log.borrow_mut().drain(..).collect())
}
#[macro_export]
macro_rules! clog {
($($arg:tt)*) => {
$crate::cradle_log(&format!($($arg)*))
};
}
#[macro_export]
macro_rules! plog {
($plugin:expr, $($arg:tt)*) => {
$crate::cradle_log(&format!("[{}] {}", $plugin.name(), format!($($arg)*)))
};
}