Expand description
Core primitives for tracing
.
tracing
is a framework for instrumenting Rust programs to collect
structured, event-based diagnostic information. This crate defines the core
primitives of tracing
.
This crate provides:
-
span::Id
identifies a span within the execution of a program. -
Event
represents a single event within a trace. -
Collect
, the trait implemented to collect trace data. -
Metadata
andCallsite
provide information describing spans andEvent
s. -
Field
,FieldSet
,Value
, andValueSet
represent the structured data attached to a span. -
Dispatch
allows spans and events to be dispatched to collectors.
In addition, it defines the global callsite registry and per-thread current dispatcher which other components of the tracing system rely on.
Compiler support: requires rustc
1.49+
§Usage
Application authors will typically not use this crate directly. Instead,
they will use the tracing
crate, which provides a much more
fully-featured API. However, this crate’s API will change very infrequently,
so it may be used when dependencies must be very stable.
Collector implementations may depend on tracing-core
rather than
tracing
, as the additional APIs provided by tracing
are primarily useful
for instrumenting libraries and applications, and are generally not
necessary for collector implementations.
The tokio-rs/tracing
repository contains less stable crates designed to
be used with the tracing
ecosystem. It includes a collection of
collector implementations, as well as utility and adapter crates.
§no_std
Support
In embedded systems and other bare-metal applications, tracing-core
can be
used without requiring the Rust standard library, although some features are
disabled.
The dependency on the standard library is controlled by two crate feature
flags, “std”, which enables the dependency on libstd
, and “alloc”, which
enables the dependency on liballoc
(and is enabled by the “std”
feature). These features are enabled by default, but no_std
users can
disable them using:
# Cargo.toml
tracing-core = { version = "0.2", default-features = false }
To enable liballoc
but not std
, use:
# Cargo.toml
tracing-core = { version = "0.2", default-features = false, features = ["alloc"] }
When both the “std” and “alloc” feature flags are disabled, tracing-core
will not make any dynamic memory allocations at runtime, and does not
require a global memory allocator.
The “alloc” feature is required to enable the Dispatch::new
function,
which requires dynamic memory allocation to construct a collector trait
object at runtime. When liballoc is disabled, new Dispatch
s may still be
created from &'static dyn Collect
references, using
Dispatch::from_static
.
The “std” feature is required to enable the following features:
- Per-thread scoped trace dispatchers (
Dispatch::set_default
andwith_default
. Since setting a thread-local dispatcher inherently requires a concept of threads to be available, this API is not possible without the standard library. - Support for constructing
Value
s from types implementingstd::error::Error
. Since theError
trait is defined instd
, it’s not possible to provide this feature withoutstd
.
All other features of tracing-core
should behave identically with and
without std
and alloc
.
§Crate Feature Flags
The following crate feature flags are available:
std
: Depend on the Rust standard library (enabled by default).alloc
: Depend onliballoc
(enabled by “std”).
§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 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 supported compiler version is not considered a semver breaking change as long as doing so complies with this policy.
Re-exports§
Modules§
- Callsites represent the source locations from which spans or events originate.
- Collectors collect and record trace data.
- Dispatches trace events to
Collect
s. - Events represent single points in time during the execution of a program.
- Span and
Event
key-value data. - Metadata describing trace data.
- Spans represent periods of time in the execution of a program.
Macros§
- Statically constructs an
Identifier
for the providedCallsite
. - Statically constructs new span metadata.
Structs§
Dispatch
trace data to aCollect
.Event
s represent single points in time where something occurred during the execution of a program.- An opaque key allowing O(1) access to a field in a
Span
’s key-value data. - Describes the level of verbosity of a span or event.
- A filter comparable to a verbosity
Level
.
Traits§
- Trait implemented by callsites.
- Trait representing the functions required to collect trace data.