wasmcloud_component/wrappers/
logging.rs

1/// The standard logging macro.
2///
3/// This macro will generically log with the specified `Level` and `format!`
4/// based argument list.
5///
6/// # Examples
7///
8/// ```no_run
9/// use wasmcloud_component::log;
10/// use wasmcloud_component::wasi::logging::logging::Level;
11///
12/// # fn main() {
13/// let data = (42, "Forty-two");
14/// let private_data = "private";
15///
16/// log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
17/// log!(context: "app_events", Level::Warn, "App warning: {}, {}, {}",
18///     data.0, data.1, private_data);
19/// # }
20/// ```
21#[macro_export]
22macro_rules! log {
23    // log!(context: "my_context", Level::Info, "a {} event", "log");
24    (context: $context:expr, $lvl:expr, $($arg:tt)+) => ({
25        $crate::wasi::logging::logging::log(
26            $lvl,
27            $context,
28            &std::fmt::format(format_args!($($arg)*)),
29        );
30    });
31
32    // log!(context: "my_context", Level::Info; "a {} event", "log");
33    (context: $context:expr, $lvl:expr; $($arg:tt)+) => ({
34        ($crate::log!(context: $context, $lvl, $($arg)+));
35    });
36
37    // log!(Level::Info, "a log event")
38    ($lvl:expr, $($arg:tt)+) => ($crate::log!(context: "", $lvl, $($arg)+));
39}
40
41#[macro_export]
42macro_rules! trace {
43    // trace!(context: "context", "a {} event", "log")
44    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Trace, $($arg)+));
45
46    // trace!(context: "context"; "a {} event", "log")
47    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Trace; $($arg)+));
48
49    // trace!("a {} event", "log")
50    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Trace, $($arg)+))
51}
52
53#[macro_export]
54macro_rules! debug {
55    // debug!(context: "context", "a {} event", "log")
56    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Debug, $($arg)+));
57
58    // debug!(context: "context"; "a {} event", "log")
59    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Debug; $($arg)+));
60
61    // debug!("a {} event", "log")
62    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Debug, $($arg)+))
63}
64
65#[macro_export]
66macro_rules! info {
67    // info!(context: "context", "a {} event", "log")
68    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Info, $($arg)+));
69
70    // info!(context: "context"; "a {} event", "log")
71    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Info; $($arg)+));
72
73    // info!("a {} event", "log")
74    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Info, $($arg)+))
75}
76
77#[macro_export]
78macro_rules! warn {
79    // warn!(context: "context", "a {} event", "log")
80    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Warn, $($arg)+));
81
82    // warn!(context: "context"; "a {} event", "log")
83    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Warn; $($arg)+));
84
85    // warn!("a {} event", "log")
86    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Warn, $($arg)+))
87}
88
89#[macro_export]
90macro_rules! error {
91    // error!(context: "context", "a {} event", "log")
92    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Error, $($arg)+));
93
94    // error!(context: "context"; "a {} event", "log")
95    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Error; $($arg)+));
96
97    // error!("a {} event", "log")
98    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Error, $($arg)+))
99}
100
101#[macro_export]
102macro_rules! critical {
103    // critical!(context: "context", "a {} event", "log")
104    (context: $context:expr, $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Critical, $($arg)+));
105
106    // critical!(context: "context"; "a {} event", "log")
107    (context: $context:expr; $($arg:tt)+) => ($crate::log!(context: $context, $crate::wasi::logging::logging::Level::Critical; $($arg)+));
108
109    // critical!("a {} event", "log")
110    ($($arg:tt)+) => ($crate::log!($crate::wasi::logging::logging::Level::Critical, $($arg)+))
111}