1#[macro_export]
15#[doc(hidden)]
16macro_rules! __log_keep_used {
17 ($($arg:tt)*) => {{
18 #[cfg(not(debug_assertions))]
19 if false { let _ = format_args!($($arg)*); }
20 }};
21}
22
23#[macro_export]
25#[doc(hidden)]
26macro_rules! __log_line {
27 ($($arg:tt)*) => {{
28 #[cfg(not(target_arch = "wasm32"))]
29 eprintln!($($arg)*);
30 #[cfg(target_arch = "wasm32")]
31 $crate::logging::console_line(&format!($($arg)*));
32 }};
33}
34
35#[macro_export]
36macro_rules! log_info {
37 ($($arg:tt)*) => {{
38 #[cfg(debug_assertions)]
39 if $crate::logging::level_enabled($crate::logging::LEVEL_INFO) {
40 $crate::__log_line!("[INFO] {}", format_args!($($arg)*));
41 }
42 $crate::__log_keep_used!($($arg)*);
43 }};
44}
45
46#[macro_export]
47macro_rules! log_debug {
48 ($($arg:tt)*) => {{
49 #[cfg(debug_assertions)]
50 if $crate::logging::level_enabled($crate::logging::LEVEL_DEBUG) {
51 $crate::__log_line!("[DEBUG] {}", format_args!($($arg)*));
52 }
53 $crate::__log_keep_used!($($arg)*);
54 }};
55}
56
57#[macro_export]
58macro_rules! log_trace {
59 ($($arg:tt)*) => {{
60 #[cfg(debug_assertions)]
61 if $crate::logging::level_enabled($crate::logging::LEVEL_TRACE) {
62 $crate::__log_line!("[TRACE] {}", format_args!($($arg)*));
63 }
64 $crate::__log_keep_used!($($arg)*);
65 }};
66}
67
68#[macro_export]
69macro_rules! log_warn {
70 ($($arg:tt)*) => {{
71 if $crate::logging::level_enabled($crate::logging::LEVEL_WARN) {
72 let _secs = $crate::rt::time_std::SystemTime::now()
73 .duration_since($crate::rt::time_std::UNIX_EPOCH)
74 .unwrap_or_default()
75 .as_secs();
76 $crate::__log_line!("[WARN {:02}:{:02}:{:02}Z] {}", (_secs / 3600) % 24, (_secs / 60) % 60, _secs % 60, format_args!($($arg)*));
77 }
78 }};
79}
80
81#[macro_export]
86macro_rules! log_net_fail {
87 ($($arg:tt)*) => {{
88 let msg = format!($($arg)*);
89 if $crate::logging::level_enabled($crate::logging::LEVEL_WARN) {
92 $crate::__log_line!("[WARN] {}", &msg);
93 }
94 $crate::logging::persist(&format!(
95 "[{} WARN] {}",
96 $crate::logging::timestamp_utc(),
97 &msg
98 ));
99 }};
100}
101
102#[macro_export]
107macro_rules! log_net_info {
108 ($($arg:tt)*) => {{
109 let msg = format!($($arg)*);
110 #[cfg(debug_assertions)]
111 if $crate::logging::level_enabled($crate::logging::LEVEL_INFO) {
112 $crate::__log_line!("[INFO] {}", &msg);
113 }
114 $crate::logging::persist(&format!(
115 "[{} INFO] {}",
116 $crate::logging::timestamp_utc(),
117 &msg
118 ));
119 }};
120}