summaryrefslogtreecommitdiffstats
path: root/vendor/tracing/src
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tracing/src')
-rw-r--r--vendor/tracing/src/field.rs6
-rw-r--r--vendor/tracing/src/instrument.rs85
-rw-r--r--vendor/tracing/src/level_filters.rs56
-rw-r--r--vendor/tracing/src/lib.rs64
-rw-r--r--vendor/tracing/src/macros.rs941
-rw-r--r--vendor/tracing/src/span.rs8
6 files changed, 947 insertions, 213 deletions
diff --git a/vendor/tracing/src/field.rs b/vendor/tracing/src/field.rs
index b3f9fbdfc..ea8e373df 100644
--- a/vendor/tracing/src/field.rs
+++ b/vendor/tracing/src/field.rs
@@ -1,13 +1,13 @@
//! `Span` and `Event` key-value data.
//!
-//! Spans and events may be annotated with key-value data, referred to as known
-//! as _fields_. These fields consist of a mapping from a key (corresponding to
+//! Spans and events may be annotated with key-value data, referred to as _fields_.
+//! These fields consist of a mapping from a key (corresponding to
//! a `&str` but represented internally as an array index) to a [`Value`].
//!
//! # `Value`s and `Subscriber`s
//!
//! `Subscriber`s consume `Value`s as fields attached to [span]s or [`Event`]s.
-//! The set of field keys on a given span or is defined on its [`Metadata`].
+//! The set of field keys on a given span or event is defined on its [`Metadata`].
//! When a span is created, it provides [`Attributes`] to the `Subscriber`'s
//! [`new_span`] method, containing any fields whose values were provided when
//! the span was created; and may call the `Subscriber`'s [`record`] method
diff --git a/vendor/tracing/src/instrument.rs b/vendor/tracing/src/instrument.rs
index 46e5f579c..87c74016b 100644
--- a/vendor/tracing/src/instrument.rs
+++ b/vendor/tracing/src/instrument.rs
@@ -1,10 +1,14 @@
-use crate::stdlib::pin::Pin;
-use crate::stdlib::task::{Context, Poll};
-use crate::stdlib::{future::Future, marker::Sized};
use crate::{
dispatcher::{self, Dispatch},
span::Span,
};
+use core::{
+ future::Future,
+ marker::Sized,
+ mem::ManuallyDrop,
+ pin::Pin,
+ task::{Context, Poll},
+};
use pin_project_lite::pin_project;
/// Attaches spans to a [`std::future::Future`].
@@ -18,7 +22,7 @@ pub trait Instrument: Sized {
/// `Instrumented` wrapper.
///
/// The attached [`Span`] will be [entered] every time the instrumented
- /// [`Future`] is polled.
+ /// [`Future`] is polled or [`Drop`]ped.
///
/// # Examples
///
@@ -80,14 +84,17 @@ pub trait Instrument: Sized {
/// [disabled]: super::Span::is_disabled()
/// [`Future`]: std::future::Future
fn instrument(self, span: Span) -> Instrumented<Self> {
- Instrumented { inner: self, span }
+ Instrumented {
+ inner: ManuallyDrop::new(self),
+ span,
+ }
}
/// Instruments this type with the [current] [`Span`], returning an
/// `Instrumented` wrapper.
///
/// The attached [`Span`] will be [entered] every time the instrumented
- /// [`Future`] is polled.
+ /// [`Future`] is polled or [`Drop`]ped.
///
/// This can be used to propagate the current span when spawning a new future.
///
@@ -252,13 +259,55 @@ pin_project! {
///
/// [`Future`]: std::future::Future
/// [`Span`]: crate::Span
+ #[project = InstrumentedProj]
+ #[project_ref = InstrumentedProjRef]
#[derive(Debug, Clone)]
#[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct Instrumented<T> {
+ // `ManuallyDrop` is used here to to enter instrument `Drop` by entering
+ // `Span` and executing `ManuallyDrop::drop`.
#[pin]
- inner: T,
+ inner: ManuallyDrop<T>,
span: Span,
}
+
+ impl<T> PinnedDrop for Instrumented<T> {
+ fn drop(this: Pin<&mut Self>) {
+ let this = this.project();
+ let _enter = this.span.enter();
+ // SAFETY: 1. `Pin::get_unchecked_mut()` is safe, because this isn't
+ // different from wrapping `T` in `Option` and calling
+ // `Pin::set(&mut this.inner, None)`, except avoiding
+ // additional memory overhead.
+ // 2. `ManuallyDrop::drop()` is safe, because
+ // `PinnedDrop::drop()` is guaranteed to be called only
+ // once.
+ unsafe { ManuallyDrop::drop(this.inner.get_unchecked_mut()) }
+ }
+ }
+}
+
+impl<'a, T> InstrumentedProj<'a, T> {
+ /// Get a mutable reference to the [`Span`] a pinned mutable reference to
+ /// the wrapped type.
+ fn span_and_inner_pin_mut(self) -> (&'a mut Span, Pin<&'a mut T>) {
+ // SAFETY: As long as `ManuallyDrop<T>` does not move, `T` won't move
+ // and `inner` is valid, because `ManuallyDrop::drop` is called
+ // only inside `Drop` of the `Instrumented`.
+ let inner = unsafe { self.inner.map_unchecked_mut(|v| &mut **v) };
+ (self.span, inner)
+ }
+}
+
+impl<'a, T> InstrumentedProjRef<'a, T> {
+ /// Get a reference to the [`Span`] a pinned reference to the wrapped type.
+ fn span_and_inner_pin_ref(self) -> (&'a Span, Pin<&'a T>) {
+ // SAFETY: As long as `ManuallyDrop<T>` does not move, `T` won't move
+ // and `inner` is valid, because `ManuallyDrop::drop` is called
+ // only inside `Drop` of the `Instrumented`.
+ let inner = unsafe { self.inner.map_unchecked(|v| &**v) };
+ (self.span, inner)
+ }
}
// === impl Instrumented ===
@@ -267,9 +316,9 @@ impl<T: Future> Future for Instrumented<T> {
type Output = T::Output;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
- let this = self.project();
- let _enter = this.span.enter();
- this.inner.poll(cx)
+ let (span, inner) = self.project().span_and_inner_pin_mut();
+ let _enter = span.enter();
+ inner.poll(cx)
}
}
@@ -298,19 +347,29 @@ impl<T> Instrumented<T> {
/// Get a pinned reference to the wrapped type.
pub fn inner_pin_ref(self: Pin<&Self>) -> Pin<&T> {
- self.project_ref().inner
+ self.project_ref().span_and_inner_pin_ref().1
}
/// Get a pinned mutable reference to the wrapped type.
pub fn inner_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T> {
- self.project().inner
+ self.project().span_and_inner_pin_mut().1
}
/// Consumes the `Instrumented`, returning the wrapped type.
///
/// Note that this drops the span.
pub fn into_inner(self) -> T {
- self.inner
+ // To manually destructure `Instrumented` without `Drop`, we
+ // move it into a ManuallyDrop and use pointers to its fields
+ let this = ManuallyDrop::new(self);
+ let span: *const Span = &this.span;
+ let inner: *const ManuallyDrop<T> = &this.inner;
+ // SAFETY: Those pointers are valid for reads, because `Drop` didn't
+ // run, and properly aligned, because `Instrumented` isn't
+ // `#[repr(packed)]`.
+ let _span = unsafe { span.read() };
+ let inner = unsafe { inner.read() };
+ ManuallyDrop::into_inner(inner)
}
}
diff --git a/vendor/tracing/src/level_filters.rs b/vendor/tracing/src/level_filters.rs
index 44f5e5f57..4e56ada2c 100644
--- a/vendor/tracing/src/level_filters.rs
+++ b/vendor/tracing/src/level_filters.rs
@@ -62,33 +62,37 @@ pub use tracing_core::{metadata::ParseLevelFilterError, LevelFilter};
/// `Span` constructors should compare the level against this value to
/// determine if those spans or events are enabled.
///
-/// [module-level documentation]: super#compile-time-filters
-pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL;
+/// [module-level documentation]: self#compile-time-filters
+pub const STATIC_MAX_LEVEL: LevelFilter = get_max_level_inner();
-cfg_if::cfg_if! {
- if #[cfg(all(not(debug_assertions), feature = "release_max_level_off"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_error"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_warn"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_info"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_debug"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_trace"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
- } else if #[cfg(feature = "max_level_off")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
- } else if #[cfg(feature = "max_level_error")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
- } else if #[cfg(feature = "max_level_warn")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
- } else if #[cfg(feature = "max_level_info")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
- } else if #[cfg(feature = "max_level_debug")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
+const fn get_max_level_inner() -> LevelFilter {
+ if cfg!(not(debug_assertions)) {
+ if cfg!(feature = "release_max_level_off") {
+ LevelFilter::OFF
+ } else if cfg!(feature = "release_max_level_error") {
+ LevelFilter::ERROR
+ } else if cfg!(feature = "release_max_level_warn") {
+ LevelFilter::WARN
+ } else if cfg!(feature = "release_max_level_info") {
+ LevelFilter::INFO
+ } else if cfg!(feature = "release_max_level_debug") {
+ LevelFilter::DEBUG
+ } else {
+ // Same as branch cfg!(feature = "release_max_level_trace")
+ LevelFilter::TRACE
+ }
+ } else if cfg!(feature = "max_level_off") {
+ LevelFilter::OFF
+ } else if cfg!(feature = "max_level_error") {
+ LevelFilter::ERROR
+ } else if cfg!(feature = "max_level_warn") {
+ LevelFilter::WARN
+ } else if cfg!(feature = "max_level_info") {
+ LevelFilter::INFO
+ } else if cfg!(feature = "max_level_debug") {
+ LevelFilter::DEBUG
} else {
- const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
+ // Same as branch cfg!(feature = "max_level_trace")
+ LevelFilter::TRACE
}
}
diff --git a/vendor/tracing/src/lib.rs b/vendor/tracing/src/lib.rs
index 342e04a82..258cbe590 100644
--- a/vendor/tracing/src/lib.rs
+++ b/vendor/tracing/src/lib.rs
@@ -19,7 +19,7 @@
//! The `tracing` crate provides the APIs necessary for instrumenting libraries
//! and applications to emit trace data.
//!
-//! *Compiler support: [requires `rustc` 1.49+][msrv]*
+//! *Compiler support: [requires `rustc` 1.56+][msrv]*
//!
//! [msrv]: #supported-rust-versions
//! # Core Concepts
@@ -192,7 +192,7 @@
//!
//! You can find more examples showing how to use this crate [here][examples].
//!
-//! [RAII]: https://github.com/rust-unofficial/patterns/blob/master/patterns/behavioural/RAII.md
+//! [RAII]: https://github.com/rust-unofficial/patterns/blob/main/src/patterns/behavioural/RAII.md
//! [examples]: https://github.com/tokio-rs/tracing/tree/master/examples
//!
//! ### Events
@@ -214,7 +214,7 @@
//! ### Configuring Attributes
//!
//! Both macros require a [`Level`] specifying the verbosity of the span or
-//! event. Optionally, the [target] and [parent span] may be overridden. If the
+//! event. Optionally, the, [target] and [parent span] may be overridden. If the
//! target and parent span are not overridden, they will default to the
//! module path where the macro was invoked and the current span (as determined
//! by the subscriber), respectively.
@@ -237,7 +237,16 @@
//! ```
//!
//! The span macros also take a string literal after the level, to set the name
-//! of the span.
+//! of the span (as above). In the case of the event macros, the name of the event can
+//! be overridden (the default is `event file:line`) using the `name:` specifier.
+//!
+//! ```
+//! # use tracing::{span, event, Level};
+//! # fn main() {
+//! span!(Level::TRACE, "my span");
+//! event!(name: "some_info", Level::INFO, "something has happened!");
+//! # }
+//! ```
//!
//! ### Recording Fields
//!
@@ -310,6 +319,19 @@
//! # }
//!```
//!
+//! Constant expressions can also be used as field names. Constants
+//! must be enclosed in curly braces (`{}`) to indicate that the *value*
+//! of the constant is to be used as the field name, rather than the
+//! constant's name. For example:
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! const RESOURCE_NAME: &str = "foo";
+//! // this span will have the field `foo = "some_id"`
+//! span!(Level::TRACE, "get", { RESOURCE_NAME } = "some_id");
+//! # }
+//!```
+//!
//! The `?` sigil is shorthand that specifies a field should be recorded using
//! its [`fmt::Debug`] implementation:
//! ```
@@ -386,22 +408,6 @@
//! span.record("parting", &"goodbye world!");
//! ```
//!
-//! Note that a span may have up to 32 fields. The following will not compile:
-//!
-//! ```rust,compile_fail
-//! # use tracing::Level;
-//! # fn main() {
-//! let bad_span = span!(
-//! Level::TRACE,
-//! "too many fields!",
-//! a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9,
-//! j = 10, k = 11, l = 12, m = 13, n = 14, o = 15, p = 16, q = 17,
-//! r = 18, s = 19, t = 20, u = 21, v = 22, w = 23, x = 24, y = 25,
-//! z = 26, aa = 27, bb = 28, cc = 29, dd = 30, ee = 31, ff = 32, gg = 33
-//! );
-//! # }
-//! ```
-//!
//! Finally, events may also include human-readable messages, in the form of a
//! [format string][fmt] and (optional) arguments, **after** the event's
//! key-value fields. If a format string and arguments are provided,
@@ -719,6 +725,7 @@
//! - [`tracing-actix-web`] provides `tracing` integration for the `actix-web` web framework.
//! - [`tracing-actix`] provides `tracing` integration for the `actix` actor
//! framework.
+//! - [`axum-insights`] provides `tracing` integration and Application insights export for the `axum` web framework.
//! - [`tracing-gelf`] implements a subscriber for exporting traces in Greylog
//! GELF format.
//! - [`tracing-coz`] provides integration with the [coz] causal profiler
@@ -747,6 +754,8 @@
//! - [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
//! - [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
//! - [`reqwest-tracing`] provides a middleware to trace [`reqwest`] HTTP requests.
+//! - [`tracing-cloudwatch`] provides a layer that sends events to AWS CloudWatch Logs.
+//! - [`clippy-tracing`] provides a tool to add, remove and check for `tracing::instrument`.
//!
//! If you're the maintainer of a `tracing` ecosystem crate not listed above,
//! please let us know! We'd love to add your project to the list!
@@ -758,6 +767,7 @@
//! [honeycomb.io]: https://www.honeycomb.io/
//! [`tracing-actix-web`]: https://crates.io/crates/tracing-actix-web
//! [`tracing-actix`]: https://crates.io/crates/tracing-actix
+//! [`axum-insights`]: https://crates.io/crates/axum-insights
//! [`tracing-gelf`]: https://crates.io/crates/tracing-gelf
//! [`tracing-coz`]: https://crates.io/crates/tracing-coz
//! [coz]: https://github.com/plasma-umass/coz
@@ -776,7 +786,7 @@
//! [Tracy]: https://github.com/wolfpld/tracy
//! [`tracing-elastic-apm`]: https://crates.io/crates/tracing-elastic-apm
//! [Elastic APM]: https://www.elastic.co/apm
-//! [`tracing-etw`]: https://github.com/microsoft/tracing-etw
+//! [`tracing-etw`]: https://github.com/microsoft/rust_win_etw/tree/main/win_etw_tracing
//! [ETW]: https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing
//! [`tracing-fluent-assertions`]: https://crates.io/crates/tracing-fluent-assertions
//! [`sentry-tracing`]: https://crates.io/crates/sentry-tracing
@@ -787,6 +797,8 @@
//! [`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
//! [`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing
//! [`reqwest`]: https://crates.io/crates/reqwest
+//! [`tracing-cloudwatch`]: https://crates.io/crates/tracing-cloudwatch
+//! [`clippy-tracing`]: https://crates.io/crates/clippy-tracing
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
//! <strong>Note</strong>: Some of these ecosystem crates are currently
@@ -817,7 +829,7 @@
//!
//! ```toml
//! [dependencies]
-//! tracing = { version = "0.1.37", default-features = false }
+//! tracing = { version = "0.1.38", default-features = false }
//! ```
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
@@ -859,14 +871,14 @@
//! ## Supported Rust Versions
//!
//! Tracing is built against the latest stable release. The minimum supported
-//! version is 1.49. The current Tracing version is not guaranteed to build on
+//! version is 1.56. The current Tracing version is not guaranteed to build on
//! Rust versions earlier than the minimum supported version.
//!
//! Tracing follows the same compiler support policies as the rest of the Tokio
//! project. The current stable Rust compiler and the three most recent minor
//! versions before it will always be supported. For example, if the current
-//! stable compiler version is 1.45, the minimum supported version will not be
-//! increased past 1.42, three minor versions prior. Increasing the minimum
+//! stable compiler version is 1.69, the minimum supported version will not be
+//! increased past 1.66, three minor versions prior. Increasing the minimum
//! supported compiler version is not considered a semver breaking change as
//! long as doing so complies with this policy.
//!
@@ -900,7 +912,6 @@
//! [flags]: #crate-feature-flags
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_cfg), deny(rustdoc::broken_intra_doc_links))]
-#![doc(html_root_url = "https://docs.rs/tracing/0.1.37")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
@@ -911,7 +922,6 @@
rust_2018_idioms,
unreachable_pub,
bad_style,
- const_err,
dead_code,
improper_ctypes,
non_shorthand_field_patterns,
diff --git a/vendor/tracing/src/macros.rs b/vendor/tracing/src/macros.rs
index f3968e5c1..dba49d169 100644
--- a/vendor/tracing/src/macros.rs
+++ b/vendor/tracing/src/macros.rs
@@ -24,7 +24,7 @@ macro_rules! span {
(target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
{
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
@@ -33,10 +33,10 @@ macro_rules! span {
};
let mut interest = $crate::subscriber::Interest::never();
if $crate::level_enabled!($lvl)
- && { interest = CALLSITE.interest(); !interest.is_never() }
- && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ && { interest = __CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
{
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// span with explicit parent
$crate::Span::child_of(
$parent,
@@ -44,9 +44,9 @@ macro_rules! span {
&$crate::valueset!(meta.fields(), $($fields)*),
)
} else {
- let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ let span = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
$crate::if_log_enabled! { $lvl, {
- span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
}};
span
}
@@ -55,7 +55,7 @@ macro_rules! span {
(target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
{
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
@@ -64,19 +64,19 @@ macro_rules! span {
};
let mut interest = $crate::subscriber::Interest::never();
if $crate::level_enabled!($lvl)
- && { interest = CALLSITE.interest(); !interest.is_never() }
- && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ && { interest = __CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
{
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// span with contextual parent
$crate::Span::new(
meta,
&$crate::valueset!(meta.fields(), $($fields)*),
)
} else {
- let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ let span = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
$crate::if_log_enabled! { $lvl, {
- span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
}};
span
}
@@ -564,6 +564,7 @@ macro_rules! error_span {
/// "App warning: {}",
/// error
/// );
+/// event!(name: "answer", Level::INFO, the_answer = data.0);
/// event!(Level::INFO, the_answer = data.0);
/// # }
/// ```
@@ -582,9 +583,115 @@ macro_rules! error_span {
// /// ```
#[macro_export]
macro_rules! event {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ let meta = __CALLSITE.metadata();
+ // event with explicit parent
+ $crate::Event::child_of(
+ $parent,
+ meta,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ target: $target,
+ parent: $parent,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($arg)+ })
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ let meta = __CALLSITE.metadata();
+ // event with contextual parent
+ $crate::Event::dispatch(
+ meta,
+ &value_set
+ );
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ target: $target,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, target: $target:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, target: $target, $lvl, { $($arg)+ })
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
file!(),
@@ -598,39 +705,38 @@ macro_rules! event {
};
let enabled = $crate::level_enabled!($lvl) && {
- let interest = CALLSITE.interest();
- !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
};
if enabled {
(|value_set: $crate::field::ValueSet| {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
+ __CALLSITE,
&value_set
);
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// event with explicit parent
$crate::Event::child_of(
$parent,
meta,
&value_set
);
- })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
} else {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
- &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
);
}
});
-
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: $target,
parent: $parent,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -639,9 +745,114 @@ macro_rules! event {
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
$crate::event!(target: $target, parent: $parent, $lvl, { $($arg)+ })
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ };
+
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && __CALLSITE.is_enabled(interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ let meta = __CALLSITE.metadata();
+ // event with explicit parent
+ $crate::Event::child_of(
+ $parent,
+ meta,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ parent: $parent,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, parent: $parent, $lvl, { $($arg)+ })
+ );
+
+ // Name.
+ (name: $name:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ let meta = __CALLSITE.metadata();
+ // event with contextual parent
+ $crate::Event::dispatch(
+ meta,
+ &value_set
+ );
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, $lvl:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $lvl, { $($arg)+ })
+ );
+
+ // Target.
(target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
file!(),
@@ -654,12 +865,12 @@ macro_rules! event {
fields: $($fields)*
};
let enabled = $crate::level_enabled!($lvl) && {
- let interest = CALLSITE.interest();
- !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
};
if enabled {
(|value_set: $crate::field::ValueSet| {
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// event with contextual parent
$crate::Event::dispatch(
meta,
@@ -667,15 +878,15 @@ macro_rules! event {
);
$crate::__tracing_log!(
$lvl,
- CALLSITE,
+ __CALLSITE,
&value_set
);
- })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
} else {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
- &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
);
}
});
@@ -683,7 +894,7 @@ macro_rules! event {
$crate::event!(
target: $target,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -692,12 +903,14 @@ macro_rules! event {
(target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, $lvl, { $($arg)+ })
);
+
+ // Parent.
(parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
parent: $parent,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => (
@@ -751,11 +964,13 @@ macro_rules! event {
(parent: $parent:expr, $lvl:expr, $($arg:tt)+ ) => (
$crate::event!(target: module_path!(), parent: $parent, $lvl, { $($arg)+ })
);
+
+ // ...
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
@@ -970,7 +1185,7 @@ macro_rules! enabled {
(kind: $kind:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
if $crate::level_enabled!($lvl) {
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"enabled ",
file!(),
@@ -982,9 +1197,9 @@ macro_rules! enabled {
level: $lvl,
fields: $($fields)*
};
- let interest = CALLSITE.interest();
- if !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest) {
- let meta = CALLSITE.metadata();
+ let interest = __CALLSITE.interest();
+ if !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest) {
+ let meta = __CALLSITE.metadata();
$crate::dispatcher::get_default(|current| current.enabled(meta))
} else {
false
@@ -1081,10 +1296,46 @@ macro_rules! enabled {
/// if pos.x >= 0.0 { "positive" } else { "negative" },
/// if pos.y >= 0.0 { "positive" } else { "negative" }
/// );
+/// trace!(name: "completed", position = ?pos);
/// # }
/// ```
#[macro_export]
macro_rules! trace {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
@@ -1100,6 +1351,59 @@ macro_rules! trace {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1166,21 +1470,8 @@ macro_rules! trace {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1196,6 +1487,20 @@ macro_rules! trace {
{ $($k).+ = $($field)*}
)
);
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { %$($k).+ = $($field)*}
+ )
+ );
($($k:ident).+, $($field:tt)*) => (
$crate::event!(
target: module_path!(),
@@ -1268,10 +1573,46 @@ macro_rules! trace {
///
/// debug!(?pos.x, ?pos.y);
/// debug!(target: "app_events", position = ?pos, "New position");
+/// debug!(name: "completed", position = ?pos);
/// # }
/// ```
#[macro_export]
macro_rules! debug {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
@@ -1287,6 +1628,59 @@ macro_rules! debug {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1353,21 +1747,8 @@ macro_rules! debug {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1480,11 +1861,47 @@ macro_rules! debug {
/// conn.port,
/// ?conn.speed,
/// );
+/// info!(name: "completed", "completed connection to {:?}", addr);
/// # }
/// ```
#[macro_export]
macro_rules! info {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1499,6 +1916,59 @@ macro_rules! info {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1565,21 +2035,8 @@ macro_rules! info {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1685,11 +2142,47 @@ macro_rules! info {
/// warning = warn_description,
/// "Received warning for input: {:?}", input,
/// );
+/// warn!(name: "invalid", ?input);
/// # }
/// ```
#[macro_export]
macro_rules! warn {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1704,6 +2197,59 @@ macro_rules! warn {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1770,21 +2316,8 @@ macro_rules! warn {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1886,11 +2419,47 @@ macro_rules! warn {
/// error!(port, error = %err_info);
/// error!(target: "app_events", "App Error: {}", err_info);
/// error!({ info = err_info }, "error on port: {}", port);
+/// error!(name: "invalid_input", "Invalid input: {}", err_info);
/// # }
/// ```
#[macro_export]
macro_rules! error {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1905,6 +2474,59 @@ macro_rules! error {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1971,21 +2593,8 @@ macro_rules! error {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -2107,13 +2716,13 @@ macro_rules! callsite {
target: $target,
level: $lvl,
fields: $crate::fieldset!( $($fields)* ),
- callsite: &CALLSITE,
+ callsite: &__CALLSITE,
kind: $kind,
}
};
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
- CALLSITE.register();
- &CALLSITE
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
+ __CALLSITE.register();
+ &__CALLSITE
}};
}
@@ -2157,7 +2766,7 @@ macro_rules! callsite2 {
target: $target,
level: $lvl,
fields: $crate::fieldset!( $($fields)* ),
- callsite: &CALLSITE,
+ callsite: &__CALLSITE,
kind: $kind,
}
};
@@ -2193,79 +2802,79 @@ macro_rules! valueset {
// };
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
)
};
@@ -2273,47 +2882,88 @@ macro_rules! valueset {
// Handle literal names
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
$crate::valueset!(
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ $next,
+ )
+ };
+
+ // Handle constant names
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr) => {
+ $crate::valueset!(
@ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
)
};
- // Remainder is unparseable, but exists --- must be format args!
+ // Remainder is unparsable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
- $crate::valueset!(@ { (&$next, Some(&format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
+ $crate::valueset!(@ { (&$next, ::core::option::Option::Some(&::core::format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
};
// === entry ===
@@ -2324,7 +2974,7 @@ macro_rules! valueset {
let mut iter = $fields.iter();
$fields.value_set($crate::valueset!(
@ { },
- iter.next().expect("FieldSet corrupted (this is a bug)"),
+ ::core::iter::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
$($kvs)+
))
}
@@ -2380,6 +3030,17 @@ macro_rules! fieldset {
$crate::fieldset!(@ { $($out),*, $k } $($rest)*)
};
+ // Handle constant names
+ (@ { $(,)* $($out:expr),* } { $k:expr } = ?$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } { $k:expr } = %$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } { $k:expr } = $val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+
// Remainder is unparseable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* } $($rest:tt)+) => {
$crate::fieldset!(@ { "message", $($out),*, })
diff --git a/vendor/tracing/src/span.rs b/vendor/tracing/src/span.rs
index 58822f4d9..3c235dc79 100644
--- a/vendor/tracing/src/span.rs
+++ b/vendor/tracing/src/span.rs
@@ -22,7 +22,7 @@
//! override their default values.
//! - The span's [verbosity level]
//! - A string literal providing the span's name.
-//! - Finally, between zero and 32 arbitrary key/value fields.
+//! - Finally, zero or more arbitrary key/value fields.
//!
//! [`target`]: super::Metadata::target
//!
@@ -824,7 +824,7 @@ impl Span {
///
/// <pre class="ignore" style="white-space:normal;font:inherit;">
/// <strong>Note</strong>: The returned <a href="../struct.EnteredSpan.html">
- /// <code>EnteredSpan</a></code> guard does not implement <code>Send</code>.
+ /// <code>EnteredSpan</code></a> guard does not implement <code>Send</code>.
/// Dropping the guard will exit <em>this</em> span, and if the guard is sent
/// to another thread and dropped there, that thread may never have entered
/// this span. Thus, <code>EnteredSpan</code>s should not be sent between threads.
@@ -1617,7 +1617,7 @@ mod test {
#[test]
fn test_record_backwards_compat() {
- Span::current().record("some-key", &"some text");
- Span::current().record("some-key", &false);
+ Span::current().record("some-key", "some text");
+ Span::current().record("some-key", false);
}
}