1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/// Equivalent to logging to the [crate::LoggerV2Async::log] function with an appropriate level, context, and a
/// [Generic].
#[macro_export]
macro_rules! log {
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => {{
        $(
            let $cl = $cl.clone();
        )*
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            Ok({
                write![f, $fmt, $($msg),*]?;
                $(
                    write![f, ", {}={}", $key, $val]?;
                )*
            })
        })))
    }};
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => {{
        $(
            let $cl = $cl.clone();
        )*
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            Ok({
                write![f, $fmt]?;
                $(
                    write![f, ", {}={}", $key, $val]?;
                )*
            })
        })))
    }};
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => {{
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            Ok({
                write![f, $fmt, $($msg),*]?;
                $(
                    write![f, ", {}={}", $key, $val]?;
                )*
            })
        })))
    }};
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr; $($key:expr => $val:expr),* $(,)?) => {{
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            Ok({
                write![f, $fmt]?;
                $(
                    write![f, ", {}={}", $key, $val]?;
                )*
            })
        })))
    }};
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => {{
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            write![f, $fmt, $($msg),*]
        })))
    }};
    ($n:expr, $log:expr, $ctx:expr, $fmt:expr $(,)?) => {{
        $log.log($n, $ctx, $crate::make_generic__(::std::sync::Arc::new(move |f| -> ::std::fmt::Result {
            write![f, $fmt]
        })))
    }};
}

/// Equivalent to [log!] with a level of 255
#[macro_export]
macro_rules! trace {
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![255, $log, $ctx, $fmt, $($msg),*; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![255, $log, $ctx, $fmt; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![255, $log, $ctx, $fmt, $($msg),*; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![255, $log, $ctx, $fmt; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => { $crate::log![255, $log, $ctx, $fmt, $($msg),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?) => { $crate::log![255, $log, $ctx, $fmt] };
}

/// Equivalent to [log!] with a level of 192
#[macro_export]
macro_rules! debug {
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![192, $log, $ctx, $fmt, $($msg),*; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![192, $log, $ctx, $fmt; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![192, $log, $ctx, $fmt, $($msg),*; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![192, $log, $ctx, $fmt; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => { $crate::log![192, $log, $ctx, $fmt, $($msg),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?) => { $crate::log![192, $log, $ctx, $fmt] };
}

/// Equivalent to [log!] with a level of 128
#[macro_export]
macro_rules! info {
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![128, $log, $ctx, $fmt, $($msg),*; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![128, $log, $ctx, $fmt; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![128, $log, $ctx, $fmt, $($msg),*; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![128, $log, $ctx, $fmt; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => { $crate::log![128, $log, $ctx, $fmt, $($msg),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?) => { $crate::log![128, $log, $ctx, $fmt] };
}

/// Equivalent to [log!] with a level of 64
#[macro_export]
macro_rules! warn {
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![64, $log, $ctx, $fmt, $($msg),*; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![64, $log, $ctx, $fmt; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![64, $log, $ctx, $fmt, $($msg),*; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![64, $log, $ctx, $fmt; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => { $crate::log![64, $log, $ctx, $fmt, $($msg),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?) => { $crate::log![64, $log, $ctx, $fmt] };
}

/// Equivalent to [log!] with a level of 0
#[macro_export]
macro_rules! error {
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![0, $log, $ctx, $fmt, $($msg),*; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?; clone $($cl:ident),* $(,)?) => { $crate::log![0, $log, $ctx, $fmt; $($key => $val),*; clone $($cl),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![0, $log, $ctx, $fmt, $($msg),*; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?; $($key:expr => $val:expr),* $(,)?) => { $crate::log![0, $log, $ctx, $fmt; $($key => $val),*] };
    ($log:expr, $ctx:expr, $fmt:expr, $($msg:expr),* $(,)?) => { $crate::log![0, $log, $ctx, $fmt, $($msg),*] };
    ($log:expr, $ctx:expr, $fmt:expr $(,)?) => { $crate::log![0, $log, $ctx, $fmt] };
}