- Incorrect inlining of
Span::new
,Span::new_root
, andSpan::new_child_of
, which could result indispatcher::get_default
being inlined at the callsite (#994) - Regression where using a struct field as a span or event field when other fields on that struct are borrowed mutably would fail to compile (#987)
- Updated
tracing-core
to 0.1.17 (#992)
Instrument
trait andInstrumented
type for attaching aSpan
to aFuture
(#808)Copy
implementations forLevel
andLevelFilter
(#992)- Multiple documentation fixes and improvements (#964, #980, #981)
Thanks to @nagisa, and new contributors @SecurityInsanity, @froydnj, @jyn514 and @TaKO8Ki for contributing to this release!
- Significantly reduced assembly generated by macro invocations (#943)
- Updated
tracing-core
to 0.1.15 (#943)
- Documented minimum supported Rust version policy (#941)
- Updated
tracing-core
to fix incorrect calculation of the global max level filter (#908)
- attributes: Support for using
self
in field expressions when instrumentingasync-trait
functions (#875) - Several documentation improvements (#832, #881, #896, #897, #911, #913)
Thanks to @anton-dutov, @nightmared, @mystor, and @toshokan for contributing to this release!
- Fixed a bug where
LevelFilter::OFF
(and thus also thestatic_max_level_off
feature flag) would enable all traces, rather than none (#853) - log: Fixed
tracing
macros andSpan
s not checkinglog::max_level
before emittinglog
records (#870)
- macros: Macros now check the global max level (
LevelFilter::current
) before the per-callsite cache when determining if a span or event is enabled. This significantly improves performance in some use cases (#853) - macros: Simplified the code generated by macro expansion significantly,
which may improve compile times and/or
rustc
optimizatation of surrounding code (#869, #869) - macros: Macros now check the static max level before checking any runtime
filtering, improving performance when a span or event is disabled by a
static_max_level_XXX
feature flag (#868) LevelFilter
is now a re-export of thetracing_core::LevelFilter
type, it can now be used interchangably with the versions intracing-core
andtracing-subscriber
(#853)- Significant performance improvements when comparing
LevelFilter
s andLevel
s (#853) - Updated the minimum
tracing-core
dependency to 0.1.12 (#853)
- macros: Quoted string literals may now be used as field names, to allow fields whose names are not valid Rust identifiers (#790)
- docs: Several documentation improvements (#850, #857, #841)
LevelFilter::current()
function, which returns the highest level that any subscriber will enable (#853)Subscriber::max_level_hint
optional trait method, for setting the value returned byLevelFilter::current()
(#853)
Thanks to new contributors @cuviper, @ethanboxx, @ben0x539, @dignati, @colelawrence, and @rbtcollins for helping out with this release!
- log: Moved verbose span enter/exit log records to "tracing::span::active" target, allowing them to be filtered separately (#833)
- log: All span lifecycle log records without fields now have the
Trace
log filter, to guard againstlog
users enabling them by default with blanket level filtering (#833)
- log/macros: Fixed missing implicit imports of the
tracing::field::debug
andtracing::field::display
functions inside the macros when the "log" feature is enabled (#835)
- attributes: Support for arbitrary expressions as fields in
#[instrument]
(#672) - attributes:
#[instrument]
now emits a compiler warning when ignoring unrecognized input (#672, #786) - Improved documentation on using
tracing
in async code (#769)
- Updated
tracing-core
dependency to 0.1.11
- macros: Excessive monomorphization in macros, which could lead to longer compilation times (#787)
- log: Compiler warnings in macros when
log
orlog-always
features are enabled (#753) - Compiler error when
tracing-core/std
feature is enabled buttracing/std
is not (#760)
Thanks to @nagisa for contributing to this release!
- macros: Replaced use of legacy
local_inner_macros
with$crate::
(#740)
- Docs fixes and improvements (#742, #731, #730)
Thanks to @bnjjj, @blaenk, and @LukeMathWalker for contributing to this release!
- log: When using the
log
compatibility feature alongside atracing
Subscriber
, log records for spans now include span IDs (#613) - attributes: Support for using
#[instrument]
on methods that are part ofasync-trait
trait implementations (#711) - attributes: Optional
#[instrument(err)]
argument to automatically emit an event if an instrumented function returnsErr
(#637) - Added
#[must_use]
attribute to the guard returned bysubscriber::set_default
(#685)
- log: Made
log
records emitted by spans much less noisy when span IDs are not available (#613)
- Several typos in the documentation (#656, #710, #715)
Thanks to @FintanH, @shepmaster, @inanna-malick, @zekisharif, @bkchr, @majecty, @ilana and @nightmared for contributing to this release!
- field:
field::Empty
type for declaring empty fields whose values will be recorded later (#548) - field:
field::Value
implementations forWrapping
andNonZero*
numbers (#538) - attributes: Support for adding arbitrary literal fields to spans generated
by
#[instrument]
(#569) - attributes:
#[instrument]
now emits a helpful compiler error when attempting to skip a function parameter (#600)
- attributes: The
#[instrument]
attribute was placed under an on-by-default feature flag "attributes" (#603)
- Broken and unresolvable links in RustDoc (#595)
Thanks to @oli-cosmian and @Kobzol for contributing to this release!
Span::with_subscriber
method to access the subscriber that tracks aSpan
(#503)- API documentation now shows which features are required by feature-flagged items (#523)
- Improved README examples (#496)
- Documentation links to related crates (#507)
Span::is_none
method (#475)LevelFilter::into_level
method (#470)LevelFilter::from_level
function andFrom<Level>
impl (#471)- Documented minimum supported Rust version (#482)
- Incorrect parameter type to
Span::follows_from
that made it impossible to call (#467) - Missing whitespace in
log
records generated when enabling thelog
feature flag (#484) - Typos and missing links in documentation (#405, #423, #439)
- Support for destructuring in arguments to
#[instrument]
ed functions (#397) - Generated field for
self
parameters when#[instrument]
ing methods (#397) - Optional
skip
argument to#[instrument]
for excluding function parameters from generated spans (#359) - Added
dispatcher::set_default
andsubscriber::set_default
APIs, which return a drop guard (#388)
- Some minor documentation errors (#356, #370)
- Fixed
#[instrument]
ed async functions not compiling onnightly-2019-09-11
or newer (#342)
- Significantly reduced performance impact of skipped spans and events when a
Subscriber
is not in use (#326) - The
log
feature will now only causetracing
spans and events to emit log records when aSubscriber
is not in use (#346)
- Added support for overriding the name of the span generated by
#[instrument]
(#330) log-always
feature flag to emit log records even when aSubscriber
is set (#346)
- Reorganized and improved API documentation (#317)
- Dev-dependencies on
ansi_term
andhumantime
crates, which were used only for examples (#316)
- New (curly-brace free) event message syntax to place the message in the first field rather than the last (#309)
- Fixed a regression causing macro stack exhaustion when the
log
feature flag is enabled (#304)
std::error::Error
as a new primitive type (#277)- Support for mixing key-value fields and
format_args
messages without curly braces as delimiters (#288)
tracing-core
dependency to 0.1.5 (#294)tracing-attributes
dependency to 0.1.2 (#297)
- Support for
no-std
+liballoc
(#263)
- Using the
#[instrument]
attribute onasync fn
s no longer requires a feature flag (#258)
- The
#[instrument]
macro now works on generic functions (#262)
#[instrument]
attribute for automatically adding spans to functions (#253)
- Log messages when a subscriber indicates that a span has closed, when the
log
feature flag is enabled (#180).
tracing-core
minimum dependency version to 0.1.2 (#174).
- Fixed an issue where event macro invocations with a single field, using local variable shorthand, would recur infinitely (#166).
- Fixed uses of deprecated
tracing-core
APIs (#174).
Span::none()
constructor, which does not require metadata and returns a completely empty span (#147).Span::current()
function, returning the current span if it is known to the subscriber (#148).
- Broken macro imports when used prefixed with
tracing::
(#152).
cfg_if
dependency to 0.1.9.
- Compilation errors when the
log
feature is enabled (#131). - Unclear wording and typos in documentation (#124, #128, #142).
- Initial release