1use cfg_if::cfg_if;
2use core::sync::atomic::AtomicBool;
3use core::sync::atomic::Ordering;
4
5static INIT: AtomicBool = AtomicBool::new(false);
6
7pub fn init_logger_debug() {
9 if !INIT.swap(true, Ordering::SeqCst) {
10 init(true);
11 }
12}
13
14pub fn init_logger() {
16 if !INIT.swap(true, Ordering::SeqCst) {
17 init(false);
18 }
19}
20
21cfg_if! {
22 if #[cfg(feature = "flexi_logger")] {
23 use flexi_logger;
24 fn init(debug: bool) {
25 let env = if debug {
26 "datex_core=trace,r#mod=trace"
27 } else {
28 "datex_core=error,r#mod=error"
29 };
30 flexi_logger::Logger::try_with_env_or_str(env).expect("Failed to initialize logger")
31 .start()
32 .expect("Failed to start logger");
33 }
34 }
35
36 else if #[cfg(feature = "wasm_logger")]
37 {
38 fn init(debug: bool) {
39 use log::Level;
40 use console_error_panic_hook;
41
42 console_log::init_with_level(
43 if debug {
44 Level::Debug
45 } else {
46 Level::Error
47 },
48 ).expect("Failed to initialize logger");
49 console_error_panic_hook::set_once();
50 }
51 }
52
53 else if #[cfg(feature = "env_logger")] {
54 use env_logger;
55 fn init(debug: bool) {
56 env_logger::init();
57 info!("Logger initialized! (Using env_logger)");
58 }
59 }
60
61 else if #[cfg(feature = "esp_logger")] {
62 fn init(debug: bool) {
63 if debug {
64 esp_println::logger::init_logger(log::LevelFilter::Debug);
65 }
66 else {
67 esp_println::logger::init_logger(log::LevelFilter::Info);
68 }
69 }
70 }
71
72 else {
73 fn init(debug: bool) {
74 #[cfg(feature = "std")]
75 {println!("No logger enabled. Logs will not be recorded.");}
76 }
77 }
78}