Skip to content

Commit

Permalink
switch macro impl to all being enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
guswynn committed Feb 4, 2022
1 parent 1a96073 commit 5834cde
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 54 deletions.
127 changes: 73 additions & 54 deletions tracing/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -801,6 +801,48 @@ macro_rules! event {
);
}

/// The same as [`enabled!`], but queries subscribers specifically for an event,
/// whereas [`enabled!`] queries for an event _or_ span.
///
/// See also [`span_enabled!`].
///
/// # Examples
///
/// ```rust
/// # use tracing::{event_enabled, Level};
/// if event_enabled!(target: "my_crate", Level::DEBUG) {
/// // some expensive work...
/// }
/// ```
///
#[macro_export]
macro_rules! event_enabled {
($($rest:tt)*)=> (
$crate::enabled!(kind: $crate::metadata::Kind::EVENT.hint(), $($rest)*)
)
}

/// The same as [`enabled!`], but queries subscribers specifically for an span,
/// whereas [`enabled!`] queries for an event _or_ span.
///
/// See also [`event_enabled!`].
///
/// # Examples
///
/// ```rust
/// # use tracing::{span_enabled, Level};
/// if span_enabled!(target: "my_crate", Level::DEBUG) {
/// // some expensive work...
/// }
/// ```
///
#[macro_export]
macro_rules! span_enabled {
($($rest:tt)*)=> (
$crate::enabled!(kind: $crate::metadata::Kind::SPAN.hint(), $($rest)*)
)
}

/// Checks whether a span or event is [enabled] based on the provided [metadata].
///
/// [enabled]: crate::Collect::enabled
Expand Down Expand Up @@ -892,56 +934,6 @@ macro_rules! event {
///
#[macro_export]
macro_rules! enabled {
($($rest:tt)*)=> (
$crate::_enabled!(kind: { $crate::metadata::Kind::HINT }, $($rest)*)
)
}

/// The same as [`enabled!`], but queries subscribers specifically for an event,
/// whereas [`enabled!`] queries for an event _or_ span.
///
/// See also [`span_enabled!`].
///
/// # Examples
///
/// ```rust
/// # use tracing::{event_enabled, Level};
/// if event_enabled!(target: "my_crate", Level::DEBUG) {
/// // some expensive work...
/// }
/// ```
///
#[macro_export]
macro_rules! event_enabled {
($($rest:tt)*)=> (
$crate::_enabled!(kind: $crate::metadata::Kind::EVENT.hint(), $($rest)*)
)
}

/// The same as [`enabled!`], but queries subscribers specifically for an span,
/// whereas [`enabled!`] queries for an event _or_ span.
///
/// See also [`event_enabled!`].
///
/// # Examples
///
/// ```rust
/// # use tracing::{span_enabled, Level};
/// if span_enabled!(target: "my_crate", Level::DEBUG) {
/// // some expensive work...
/// }
/// ```
///
#[macro_export]
macro_rules! span_enabled {
($($rest:tt)*)=> (
$crate::_enabled!(kind: $crate::metadata::Kind::SPAN.hint(), $($rest)*)
)
}

#[doc(hidden)]
#[macro_export]
macro_rules! _enabled {
(kind: $kind:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
if $crate::level_enabled!($lvl) {
use $crate::__macro_support::Callsite as _;
Expand Down Expand Up @@ -970,30 +962,57 @@ macro_rules! _enabled {
});
// Just target and level
(kind: $kind:expr, target: $target:expr, $lvl:expr ) => (
$crate::_enabled!(kind: $kind, target: $target, $lvl, { })
$crate::enabled!(kind: $kind, target: $target, $lvl, { })
);
(target: $target:expr, $lvl:expr ) => (
$crate::enabled!(kind: $crate::metadata::Kind::HINT, target: $target, $lvl, { })
);

// These two cases handle fields with no values
(kind: $kind:expr, target: $target:expr, $lvl:expr, $($field:tt)*) => (
$crate::_enabled!(
$crate::enabled!(
kind: $kind,
target: $target,
$lvl,
{ $($field)*}
)
);
(target: $target:expr, $lvl:expr, $($field:tt)*) => (
$crate::enabled!(
kind: $crate::metadata::Kind::HINT,
target: $target,
$lvl,
{ $($field)*}
)
);

// Level and field case
(kind: $kind:expr, $lvl:expr, $($field:tt)*) => (
$crate::_enabled!(
$crate::enabled!(
kind: $kind,
target: module_path!(),
$lvl,
{ $($field)*}
)
);

// Simplest `enabled!` case
// Simplest `enabled!` case
(kind: $kind:expr, $lvl:expr ) => (
$crate::_enabled!(kind: $kind, target: module_path!(), $lvl, { })
$crate::enabled!(kind: $kind, target: module_path!(), $lvl, { })
);
($lvl:expr ) => (
$crate::enabled!(kind: $crate::metadata::Kind::HINT, target: module_path!(), $lvl, { })
);

// Fallthrough from above
($lvl:expr, $($field:tt)*) => (
$crate::enabled!(
kind: $crate::metadata::Kind::HINT,
target: module_path!(),
$lvl,
{ $($field)*}
)
);
}

Expand Down
4 changes: 4 additions & 0 deletions tracing/tests/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,10 @@ fn enabled() {

span_enabled!(target: "rando", Level::DEBUG, field);
event_enabled!(target: "rando", Level::DEBUG, field);

// other cases
span_enabled!(Level::DEBUG);
span_enabled!(Level::DEBUG, foo, bar.baz, quux,);
}

#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
Expand Down

0 comments on commit 5834cde

Please sign in to comment.