🛈 Note: This is pre-release documentation for the upcoming tracing 0.2.0 ecosystem.

For the release documentation, please see docs.rs, instead.

Module tracing_core::field

source ·
Expand description

Span and Event key-value data.

Spans and events may be annotated with key-value data, known 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.

§Values and Collects

Collectors consume Values as fields attached to spans or Events. 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 collector’s new_span method, containing any fields whose values were provided when the span was created; and may call the collector’s record method with additional Records if values are added for more of its fields. Similarly, the Event type passed to the collector’s event method will contain any fields attached to each event.

tracing represents values as either one of a set of Rust primitives (i64, u64, f64, i128, u128, bool, and &str) or using a fmt::Display or fmt::Debug implementation. Collectors are provided these primitive value types as dyn Value trait objects.

These trait objects can be formatted using fmt::Debug, but may also be recorded as typed data by calling the Value::record method on these trait objects with a visitor implementing the Visit trait. This trait represents the behavior used to record values of various types. For example, we might record integers by incrementing counters for their field names, rather than printing them.


  • A Value which serializes as a string using fmt::Debug.
  • A Value which serializes using fmt::Display.
  • An empty field.
  • An opaque key allowing O(1) access to a field in a Span’s key-value data.
  • Describes the fields present on a span.
  • An iterator over a set of fields.
  • A set of fields and values for a span.


  • A field value of an erased type.
  • Visits typed values.


  • Wraps a type implementing fmt::Debug as a Value that can be recorded using its Debug implementation.
  • Wraps a type implementing fmt::Display as a Value that can be recorded using its Display implementation.