use std::sync::Once;
static INIT: Once = std::sync::Once::new();
#[uniffi::export]
pub fn init_logging(level: String) {
INIT.call_once(|| {
#[cfg(target_os = "android")]
{
use android_logger::{Config, FilterBuilder};
use log::LevelFilter;
android_logger::init_once(
Config::default()
.with_max_level(LevelFilter::Trace)
.with_tag("cdk")
.format(|f: &mut dyn std::fmt::Write, record: &log::Record| {
write!(f, "{}", record.args())
})
.with_filter(FilterBuilder::new().parse(&level).build()),
);
}
#[cfg(not(target_os = "android"))]
{
use tracing_subscriber::{fmt, EnvFilter};
let filter = EnvFilter::try_new(&level).unwrap_or_else(|_| EnvFilter::new("info"));
fmt()
.with_env_filter(filter)
.with_target(true)
.with_ansi(false)
.init();
}
});
}
#[uniffi::export]
pub fn init_default_logging() {
init_logging("info".to_string());
}