|
30 | 30 | #[macro_export] |
31 | 31 | macro_rules! log { |
32 | 32 | // log!(target: "my_target", Level::Info, key1:? = 42, key2 = true; "a {} event", "log"); |
33 | | - (target: $target:expr, $lvl:expr, $($key:tt $(:$capture:tt)? = $value:expr),+; $($arg:tt)+) => ({ |
| 33 | + (target: $target:expr, $lvl:expr, $($key:tt $(:$capture:tt)? $(= $value:expr)?),+; $($arg:tt)+) => ({ |
34 | 34 | let lvl = $lvl; |
35 | 35 | if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() { |
36 | 36 | $crate::__private_api::log::<&_>( |
37 | 37 | $crate::__private_api::format_args!($($arg)+), |
38 | 38 | lvl, |
39 | 39 | &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()), |
40 | 40 | $crate::__private_api::line!(), |
41 | | - &[$(($crate::__log_key!($key), $crate::__log_value!(($value)$(:$capture)*))),+] |
| 41 | + &[$(($crate::__log_key!($key), $crate::__log_value!($key $(:$capture)* = $($value)*))),+] |
42 | 42 | ); |
43 | 43 | } |
44 | 44 | }); |
@@ -256,10 +256,19 @@ macro_rules! __log_key { |
256 | 256 | #[macro_export] |
257 | 257 | #[cfg(feature = "kv")] |
258 | 258 | macro_rules! __log_value { |
259 | | - // Default |
260 | | - (($args:expr)) => { |
| 259 | + // Entrypoint |
| 260 | + ($key:tt = $args:expr) => { |
261 | 261 | $crate::__log_value!(($args):value) |
262 | 262 | }; |
| 263 | + ($key:tt :$capture:tt = $args:expr) => { |
| 264 | + $crate::__log_value!(($args):$capture) |
| 265 | + }; |
| 266 | + ($key:ident =) => { |
| 267 | + $crate::__log_value!(($key):value) |
| 268 | + }; |
| 269 | + ($key:ident :$capture:tt =) => { |
| 270 | + $crate::__log_value!(($key):$capture) |
| 271 | + }; |
263 | 272 | // ToValue |
264 | 273 | (($args:expr):value) => { |
265 | 274 | $crate::__private_api::capture_to_value(&&$args) |
|
0 commit comments