628 lines · 18.1 KB · Rust
RawDownload
//! A crate providing macros for creating spans in various detail levels. `coarse!` should be used for top-level operations, whereas//! `detail!` should be used in plumbing crates unless their operations are likely to cost a lot of time.//!//! The application is supposed to explicitly turn on tracing via `gix-features`.//! Crates that use `gix-features` should use `gix_features::trace`, and those who don't can use `gix_trace` directly.//! ## Feature Flags#![cfg_attr(    all(doc, feature = "document-features"),    doc = ::document_features::document_features!())]#![cfg_attr(all(doc, feature = "document-features"), feature(doc_cfg))]#![deny(missing_docs, unsafe_code)] /// The level at which the tracing item should be created.////// It's used to filter items early.#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]pub enum Level {    /// A coarse-grained trace level, one that should span entire operations with low frequency.    Coarse = 1,    /// Finer grained trace level that further subdivides coarse-level traces.    ///    /// Note that these should only be created for areas of the code which have significant cost.    Detail = 2,} /// The maximum allowed level for tracing items, as compiled in.#[cfg(feature = "tracing-detail")]pub const MAX_LEVEL: Level = Level::Detail;/// The maximum allowed level for tracing items, as compiled in.#[cfg(not(feature = "tracing-detail"))]pub const MAX_LEVEL: Level = Level::Coarse; #[cfg(feature = "tracing")]mod enabled; #[cfg(feature = "tracing")]pub use enabled::{__tracing, Span, field}; impl Span {    /// Execute `f` in with this span active, consuming it.    pub fn into_scope<T>(self, f: impl FnOnce() -> T) -> T {        f()    }} #[cfg(not(feature = "tracing"))]mod disabled;#[cfg(not(feature = "tracing"))]pub use disabled::Span; ///pub mod event {    #[cfg(feature = "tracing")]    pub use tracing::Level;     /// All available tracing levels for use in `event!()` macro.    #[cfg(not(feature = "tracing"))]    #[repr(usize)]    #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)]    pub enum Level {        /// The "trace" level.        ///        /// Designates very low priority, often extremely verbose, information.        TRACE = 0,        /// The "debug" level.        ///        /// Designates lower priority information.        DEBUG = 1,        /// The "info" level.        ///        /// Designates useful information.        INFO = 2,        /// The "warn" level.        ///        /// Designates hazardous situations.        WARN = 3,        /// The "error" level.        ///        /// Designates very serious errors.        ERROR = 4,    }} /// Create a new [coarse][Level::Coarse] span.#[macro_export]macro_rules! coarse {    (target: $target:expr, $name:expr, $($field:tt)*) => {        $crate::span!(            target: $target,            $crate::Level::Coarse,            $name,            $($field)*        )    };    (target: $target:expr, $name:expr) => {        $crate::coarse!(target: $target, $name,)    };    ($name:expr, $($field:tt)*) => {        $crate::span!(            target: module_path!(),            $crate::Level::Coarse,            $name,            $($field)*        )    };    ($name:expr) => {$crate::coarse!($name,)};} /// Create a new [detail][Level::Detail] span.#[macro_export]macro_rules! detail {    (target: $target:expr, $name:expr, $($field:tt)*) => {        $crate::span!(            target: $target,            $crate::Level::Detail,            $name,            $($field)*        )    };    (target: $target:expr, $name:expr) => {        $crate::detail!(target: $target, $name,)    };    ($name:expr, $($field:tt)*) => {        $crate::span!(            target: module_path!(),            $crate::Level::Detail,            $name,            $($field)*        )    };    ($name:expr) => {$crate::coarse!($name,)};} /// Emit an error event.#[macro_export]macro_rules! error {    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::ERROR, { $($field)* }, $($arg)*)    );    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::ERROR, { $($k).+ $($field)* })    );    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::ERROR, { ?$($k).+ $($field)* })    );    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::ERROR, { %$($k).+ $($field)* })    );    (target: $target:expr, $($arg:tt)+ ) => (        $crate::event!(target: $target, $crate::event::Level::ERROR, {}, $($arg)+)    );    ({ $($field:tt)+ }, $($arg:tt)+ ) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { $($field)+ },            $($arg)+        )    );    ($($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { $($k).+ = $($field)*}        )    );    (?$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { ?$($k).+ = $($field)*}        )    );    (%$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { %$($k).+ = $($field)*}        )    );    ($($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { $($k).+, $($field)*}        )    );    (?$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { ?$($k).+, $($field)*}        )    );    (%$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { %$($k).+, $($field)*}        )    );    (?$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { ?$($k).+ }        )    );    (%$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { %$($k).+ }        )    );    ($($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            { $($k).+ }        )    );    ($($arg:tt)+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::ERROR,            {},            $($arg)+        )    );} /// Emit a warn event.#[macro_export]macro_rules! warn {    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::WARN, { $($field)* }, $($arg)*)    );    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::WARN, { $($k).+ $($field)* })    );    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::WARN, { ?$($k).+ $($field)* })    );    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::WARN, { %$($k).+ $($field)* })    );    (target: $target:expr, $($arg:tt)+ ) => (        $crate::event!(target: $target, $crate::event::Level::WARN, {}, $($arg)+)    );    ({ $($field:tt)+ }, $($arg:tt)+ ) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { $($field)+ },            $($arg)+        )    );    ($($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { $($k).+ = $($field)*}        )    );    (?$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { ?$($k).+ = $($field)*}        )    );    (%$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { %$($k).+ = $($field)*}        )    );    ($($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { $($k).+, $($field)*}        )    );    (?$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { ?$($k).+, $($field)*}        )    );    (%$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { %$($k).+, $($field)*}        )    );    (?$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { ?$($k).+ }        )    );    (%$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { %$($k).+ }        )    );    ($($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            { $($k).+ }        )    );    ($($arg:tt)+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::WARN,            {},            $($arg)+        )    );} /// Emit an info event.#[macro_export]macro_rules! info {    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::INFO, { $($field)* }, $($arg)*)    );    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::INFO, { $($k).+ $($field)* })    );    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::INFO, { ?$($k).+ $($field)* })    );    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::INFO, { %$($k).+ $($field)* })    );    (target: $target:expr, $($arg:tt)+ ) => (        $crate::event!(target: $target, $crate::event::Level::INFO, {}, $($arg)+)    );    ({ $($field:tt)+ }, $($arg:tt)+ ) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { $($field)+ },            $($arg)+        )    );    ($($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { $($k).+ = $($field)*}        )    );    (?$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { ?$($k).+ = $($field)*}        )    );    (%$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { %$($k).+ = $($field)*}        )    );    ($($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { $($k).+, $($field)*}        )    );    (?$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { ?$($k).+, $($field)*}        )    );    (%$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { %$($k).+, $($field)*}        )    );    (?$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { ?$($k).+ }        )    );    (%$($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { %$($k).+ }        )    );    ($($k:ident).+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            { $($k).+ }        )    );    ($($arg:tt)+) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::INFO,            {},            $($arg)+        )    );} /// Emit a debug event.#[macro_export]macro_rules! debug {    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::DEBUG, { $($field)* }, $($arg)*)    );    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::DEBUG, { $($k).+ $($field)* })    );    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::DEBUG, { ?$($k).+ $($field)* })    );    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (        $crate::event!(target: $target, $crate::event::Level::DEBUG, { %$($k).+ $($field)* })    );    (target: $target:expr, $($arg:tt)+ ) => (        $crate::event!(target: $target, $crate::event::Level::DEBUG, {}, $($arg)+)    );    ({ $($field:tt)+ }, $($arg:tt)+ ) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { $($field)+ },            $($arg)+        )    );    ($($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { $($k).+ = $($field)*}        )    );    (?$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { ?$($k).+ = $($field)*}        )    );    (%$($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { %$($k).+ = $($field)*}        )    );    ($($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { $($k).+, $($field)*}        )    );    (?$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { ?$($k).+, $($field)*}        )    );    (%$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $crate::event::Level::DEBUG,            { %$($k).+, $($field)*}        )    );    (?$($k:ident).+) => (

Lines 1–500 of 628.