macro_rules! log_with_level {
    ($cat:expr, level: $level:expr, obj: $obj:expr, $msg:literal) => { ... };
    ($cat:expr, level: $level:expr, obj: $obj:expr, $($args:tt)*) => { ... };
    ($cat:expr, level: $level:expr, imp: $imp:expr, $msg:literal) => { ... };
    ($cat:expr, level: $level:expr, imp: $imp:expr, $($args:tt)*) => { ... };
    ($cat:expr, level: $level:expr, id: $id:literal, $msg:literal) => { ... };
    ($cat:expr, level: $level:expr, id: $id:literal, $($args:tt)*) => { ... };
    ($cat:expr, level: $level:expr, id: $id:expr, $msg:literal) => { ... };
    ($cat:expr, level: $level:expr, id: $id:expr, $($args:tt)*) => { ... };
    ($cat:expr, level: $level:expr, $msg:literal) => { ... };
    ($cat:expr, level: $level:expr, $($args:tt)*) => { ... };
}