mirror of
https://github.com/edg-l/edlang.git
synced 2024-11-23 16:38:24 +00:00
353 lines
73 KiB
HTML
353 lines
73 KiB
HTML
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait representing the functions required to collect trace data."><title>Subscriber in tracing_core::subscriber - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="tracing_core" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../tracing_core/index.html"><img src="https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../../tracing_core/index.html"><img src="https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png" alt="logo"></a><h2><a href="../../tracing_core/index.html">tracing_core</a><span class="version">0.1.32</span></h2></div><h2 class="location"><a href="#">Subscriber</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.enabled">enabled</a></li><li><a href="#tymethod.enter">enter</a></li><li><a href="#tymethod.event">event</a></li><li><a href="#tymethod.exit">exit</a></li><li><a href="#tymethod.new_span">new_span</a></li><li><a href="#tymethod.record">record</a></li><li><a href="#tymethod.record_follows_from">record_follows_from</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.clone_span">clone_span</a></li><li><a href="#method.current_span">current_span</a></li><li><a href="#method.downcast_raw">downcast_raw</a></li><li><a href="#method.drop_span">drop_span</a></li><li><a href="#method.event_enabled">event_enabled</a></li><li><a href="#method.max_level_hint">max_level_hint</a></li><li><a href="#method.on_register_dispatch">on_register_dispatch</a></li><li><a href="#method.register_callsite">register_callsite</a></li><li><a href="#method.try_close">try_close</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Subscriber-for-Arc%3CS%3E">Arc<S></a></li><li><a href="#imp
|
|||
|
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../tracing_core/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">tracing_core</a>::<wbr><a href="index.html">subscriber</a>::<wbr><a class="trait" href="#">Subscriber</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/tracing_core/subscriber.rs.html#83-502">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Subscriber: 'static {
|
|||
|
<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 16 methods</span></summary> // Required methods
|
|||
|
fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a>;
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="../span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>;
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="../span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>);
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>);
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
|||
|
<span class="item-spacer"></span> fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
|||
|
|
|||
|
// Provided methods
|
|||
|
fn <a href="#method.on_register_dispatch" class="fn">on_register_dispatch</a>(&self, subscriber: &<a class="struct" href="../struct.Dispatch.html" title="struct tracing_core::Dispatch">Dispatch</a>) { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.register_callsite" class="fn">register_callsite</a>(
|
|||
|
&self,
|
|||
|
metadata: &'static <a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>
|
|||
|
) -> <a class="struct" href="struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a> { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>> { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a> { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a> { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, _id: <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a> { ... }
|
|||
|
<span class="item-spacer"></span> fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="../span/struct.Current.html" title="struct tracing_core::span::Current">Current</a> { ... }
|
|||
|
<span class="item-spacer"></span> unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.76.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.unit.html">()</a>> { ... }
|
|||
|
</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait representing the functions required to collect trace data.</p>
|
|||
|
<p>Crates that provide implementations of methods for collecting or recording
|
|||
|
trace data should implement the <code>Subscriber</code> interface. This trait is
|
|||
|
intended to represent fundamental primitives for collecting trace events and
|
|||
|
spans — other libraries may offer utility functions and types to make
|
|||
|
subscriber implementations more modular or improve the ergonomics of writing
|
|||
|
subscribers.</p>
|
|||
|
<p>A subscriber is responsible for the following:</p>
|
|||
|
<ul>
|
|||
|
<li>Registering new spans as they are created, and providing them with span
|
|||
|
IDs. Implicitly, this means the subscriber may determine the strategy for
|
|||
|
determining span equality.</li>
|
|||
|
<li>Recording the attachment of field values and follows-from annotations to
|
|||
|
spans.</li>
|
|||
|
<li>Filtering spans and events, and determining when those filters must be
|
|||
|
invalidated.</li>
|
|||
|
<li>Observing spans as they are entered, exited, and closed, and events as
|
|||
|
they occur.</li>
|
|||
|
</ul>
|
|||
|
<p>When a span is entered or exited, the subscriber is provided only with the
|
|||
|
<a href="../span/struct.Id.html" title="struct tracing_core::span::Id">ID</a> with which it tagged that span when it was created. This means
|
|||
|
that it is up to the subscriber to determine whether and how span <em>data</em> —
|
|||
|
the fields and metadata describing the span — should be stored. The
|
|||
|
<a href="../trait.Subscriber.html#tymethod.new_span" title="method tracing_core::Subscriber::new_span"><code>new_span</code></a> function is called when a new span is created, and at that
|
|||
|
point, the subscriber <em>may</em> choose to store the associated data if it will
|
|||
|
be referenced again. However, if the data has already been recorded and will
|
|||
|
not be needed by the implementations of <code>enter</code> and <code>exit</code>, the subscriber
|
|||
|
may freely discard that data without allocating space to store it.</p>
|
|||
|
<h3 id="overriding-default-impls"><a href="#overriding-default-impls">Overriding default impls</a></h3>
|
|||
|
<p>Some trait methods on <code>Subscriber</code> have default implementations, either in
|
|||
|
order to reduce the surface area of implementing <code>Subscriber</code>, or for
|
|||
|
backward-compatibility reasons. However, many subscribers will likely want
|
|||
|
to override these default implementations.</p>
|
|||
|
<p>The following methods are likely of interest:</p>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p><a href="../trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a> is called once for each callsite from which a span
|
|||
|
event may originate, and returns an <a href="struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a> value describing whether or
|
|||
|
not the subscriber wishes to see events or spans from that callsite. By
|
|||
|
default, it calls <a href="../trait.Subscriber.html#tymethod.enabled" title="method tracing_core::Subscriber::enabled"><code>enabled</code></a>, and returns <code>Interest::always()</code> if
|
|||
|
<code>enabled</code> returns true, or <code>Interest::never()</code> if enabled returns false.
|
|||
|
However, if the subscriber’s interest can change dynamically at runtime,
|
|||
|
it may want to override this function to return <code>Interest::sometimes()</code>.
|
|||
|
Additionally, subscribers which wish to perform a behaviour once for each
|
|||
|
callsite, such as allocating storage for data related to that callsite,
|
|||
|
can perform it in <code>register_callsite</code>.</p>
|
|||
|
<p>See also the <a href="../callsite/index.html#registering-callsites" title="mod tracing_core::callsite">documentation on the callsite registry</a> for details
|
|||
|
on <a href="../trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a>.</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><a href="../trait.Subscriber.html#method.event_enabled" title="method tracing_core::Subscriber::event_enabled"><code>event_enabled</code></a> is called once before every call to the <a href="../trait.Subscriber.html#tymethod.event" title="method tracing_core::Subscriber::event"><code>event</code></a>
|
|||
|
method. This can be used to implement filtering on events once their field
|
|||
|
values are known, but before any processing is done in the <code>event</code> method.</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><a href="../trait.Subscriber.html#method.clone_span" title="method tracing_core::Subscriber::clone_span"><code>clone_span</code></a> is called every time a span ID is cloned, and <a href="../trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a>
|
|||
|
is called when a span ID is dropped. By default, these functions do
|
|||
|
nothing. However, they can be used to implement reference counting for
|
|||
|
spans, allowing subscribers to free storage for span data and to determine
|
|||
|
when a span has <em>closed</em> permanently (rather than being exited).
|
|||
|
Subscribers which store per-span data or which need to track span closures
|
|||
|
should override these functions together.</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.enabled" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#206">source</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if a span or event with the specified <a href="../struct.Metadata.html" title="struct tracing_core::Metadata">metadata</a> would be
|
|||
|
recorded.</p>
|
|||
|
<p>By default, it is assumed that this filter needs only be evaluated once
|
|||
|
for each callsite, so it is called by <a href="../trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a> when each
|
|||
|
callsite is registered. The result is used to determine if the subscriber
|
|||
|
is always <a href="struct.Interest.html" title="struct tracing_core::subscriber::Interest">interested</a> or never interested in that callsite. This is intended
|
|||
|
primarily as an optimization, so that expensive filters (such as those
|
|||
|
involving string search, et cetera) need not be re-evaluated.</p>
|
|||
|
<p>However, if the subscriber’s interest in a particular span or event may
|
|||
|
change, or depends on contexts only determined dynamically at runtime,
|
|||
|
then the <code>register_callsite</code> method should be overridden to return
|
|||
|
<a href="struct.Interest.html#method.sometimes" title="associated function tracing_core::subscriber::Interest::sometimes"><code>Interest::sometimes</code></a>. In that case, this function will be called every
|
|||
|
time that span or event occurs.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.new_span" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#258">source</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="../span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section></summary><div class="docblock"><p>Visit the construction of a new span, returning a new <a href="../span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> for the
|
|||
|
span being constructed.</p>
|
|||
|
<p>The provided <a href="../span/struct.Attributes.html" title="struct tracing_core::span::Attributes"><code>Attributes</code></a> contains any field values that were provided
|
|||
|
when the span was created. The subscriber may pass a <a href="../field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the
|
|||
|
<code>Attributes</code>’ <a href="../span/struct.Attributes.html#method.record" title="method tracing_core::span::Attributes::record"><code>record</code> method</a> to record these values.</p>
|
|||
|
<p>IDs are used to uniquely identify spans and events within the context of a
|
|||
|
subscriber, so span equality will be based on the returned ID. Thus, if
|
|||
|
the subscriber wishes for all spans with the same metadata to be
|
|||
|
considered equal, it should return the same ID every time it is given a
|
|||
|
particular set of metadata. Similarly, if it wishes for two separate
|
|||
|
instances of a span with the same metadata to <em>not</em> be equal, it should
|
|||
|
return a distinct ID every time this function is called, regardless of
|
|||
|
the metadata.</p>
|
|||
|
<p>Note that the subscriber is free to assign span IDs based on whatever
|
|||
|
scheme it sees fit. Any guarantees about uniqueness, ordering, or ID
|
|||
|
reuse are left up to the subscriber implementation to determine.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#298">source</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="../span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section></summary><div class="docblock"><p>Record a set of values on a span.</p>
|
|||
|
<p>This method will be invoked when value is recorded on a span.
|
|||
|
Recording multiple values for the same field is possible,
|
|||
|
but the actual behaviour is defined by the subscriber implementation.</p>
|
|||
|
<p>Keep in mind that a span might not provide a value
|
|||
|
for each field it declares.</p>
|
|||
|
<p>The subscriber is expected to provide a <a href="../field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the <code>Record</code>’s
|
|||
|
<a href="../span/struct.Record.html#method.record" title="method tracing_core::span::Record::record"><code>record</code> method</a> in order to record the added values.</p>
|
|||
|
<h5 id="example"><a href="#example">Example</a></h5>
|
|||
|
<p>“foo = 3” will be recorded when <a href="../span/struct.Attributes.html#method.record" title="method tracing_core::span::Attributes::record"><code>record</code></a> is called on the
|
|||
|
<code>Attributes</code> passed to <code>new_span</code>.
|
|||
|
Since values are not provided for the <code>bar</code> and <code>baz</code> fields,
|
|||
|
the span’s <code>Metadata</code> will indicate that it <em>has</em> those fields,
|
|||
|
but values for them won’t be recorded at this time.</p>
|
|||
|
|
|||
|
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>span = <span class="macro">span!</span>(<span class="string">"my_span"</span>, foo = <span class="number">3</span>, bar, baz);
|
|||
|
|
|||
|
<span class="comment">// `Subscriber::record` will be called with a `Record`
|
|||
|
// containing "bar = false"
|
|||
|
</span>span.record(<span class="string">"bar"</span>, <span class="kw-2">&</span><span class="bool-val">false</span>);
|
|||
|
|
|||
|
<span class="comment">// `Subscriber::record` will be called with a `Record`
|
|||
|
// containing "baz = "a string""
|
|||
|
</span>span.record(<span class="string">"baz"</span>, <span class="kw-2">&</span><span class="string">"a string"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_follows_from" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#318">source</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Adds an indication that <code>span</code> follows from the span with the id
|
|||
|
<code>follows</code>.</p>
|
|||
|
<p>This relationship differs somewhat from the parent-child relationship: a
|
|||
|
span may have any number of prior spans, rather than a single one; and
|
|||
|
spans are not considered to be executing <em>inside</em> of the spans they
|
|||
|
follow from. This means that a span may close even if subsequent spans
|
|||
|
that follow from it are still open, and time spent inside of a
|
|||
|
subsequent span should not be included in the time its precedents were
|
|||
|
executing. This is used to model causal relationships such as when a
|
|||
|
single future spawns several related background tasks, et cetera.</p>
|
|||
|
<p>If the subscriber has spans corresponding to the given IDs, it should
|
|||
|
record this relationship in whatever way it deems necessary. Otherwise,
|
|||
|
if one or both of the given span IDs do not correspond to spans that the
|
|||
|
subscriber knows about, or if a cyclical relationship would be created
|
|||
|
(i.e., some span <em>a</em> which proceeds some other span <em>b</em> may not also
|
|||
|
follow from <em>b</em>), it may silently do nothing.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.event" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#349">source</a><h4 class="code-header">fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>)</h4></section></summary><div class="docblock"><p>Records that an <a href="../struct.Event.html" title="struct tracing_core::Event"><code>Event</code></a> has occurred.</p>
|
|||
|
<p>This method will be invoked when an Event is constructed by
|
|||
|
the <code>Event</code>’s <a href="../struct.Event.html#method.dispatch" title="associated function tracing_core::Event::dispatch"><code>dispatch</code> method</a>. For example, this happens internally
|
|||
|
when an event macro from <code>tracing</code> is called.</p>
|
|||
|
<p>The key difference between this method and <code>record</code> is that <code>record</code> is
|
|||
|
called when a value is recorded for a field defined by a span,
|
|||
|
while <code>event</code> is called when a new event occurs.</p>
|
|||
|
<p>The provided <code>Event</code> struct contains any field values attached to the
|
|||
|
event. The subscriber may pass a <a href="../field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the <code>Event</code>’s
|
|||
|
<a href="../struct.Event.html#method.record" title="method tracing_core::Event::record"><code>record</code> method</a> to record these values.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.enter" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#359">source</a><h4 class="code-header">fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Records that a span has been entered.</p>
|
|||
|
<p>When entering a span, this method is called to notify the subscriber
|
|||
|
that the span has been entered. The subscriber is provided with the
|
|||
|
<a href="../span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> of the entered span, and should update any internal state
|
|||
|
tracking the current span accordingly.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.exit" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#371">source</a><h4 class="code-header">fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Records that a span has been exited.</p>
|
|||
|
<p>When exiting a span, this method is called to notify the subscriber
|
|||
|
that the span has been exited. The subscriber is provided with the
|
|||
|
<a href="../span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> of the exited span, and should update any internal state
|
|||
|
tracking the current span accordingly.</p>
|
|||
|
<p>Exiting a span does not imply that the span will not be re-entered.</p>
|
|||
|
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.on_register_dispatch" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#103-105">source</a><h4 class="code-header">fn <a href="#method.on_register_dispatch" class="fn">on_register_dispatch</a>(&self, subscriber: &<a class="struct" href="../struct.Dispatch.html" title="struct tracing_core::Dispatch">Dispatch</a>)</h4></section></summary><div class="docblock"><p>Invoked when this subscriber becomes a <a href="../struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a>.</p>
|
|||
|
<h6 id="avoiding-memory-leaks"><a href="#avoiding-memory-leaks">Avoiding Memory Leaks</a></h6>
|
|||
|
<p><code>Subscriber</code>s should not store their own <a href="../struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a>. Because the
|
|||
|
<code>Dispatch</code> owns the <code>Subscriber</code>, storing the <code>Dispatch</code> within the
|
|||
|
<code>Subscriber</code> will create a reference count cycle, preventing the <code>Dispatch</code>
|
|||
|
from ever being dropped.</p>
|
|||
|
<p>Instead, when it is necessary to store a cyclical reference to the
|
|||
|
<code>Dispatch</code> within a <code>Subscriber</code>, use <a href="../struct.Dispatch.html#method.downgrade" title="method tracing_core::Dispatch::downgrade"><code>Dispatch::downgrade</code></a> to convert a
|
|||
|
<code>Dispatch</code> into a <a href="../dispatcher/struct.WeakDispatch.html" title="struct tracing_core::dispatcher::WeakDispatch"><code>WeakDispatch</code></a>. This type is analogous to
|
|||
|
<a href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Weak.html" title="struct alloc::sync::Weak"><code>std::sync::Weak</code></a>, and does not create a reference count cycle. A
|
|||
|
<a href="../dispatcher/struct.WeakDispatch.html" title="struct tracing_core::dispatcher::WeakDispatch"><code>WeakDispatch</code></a> can be stored within a <code>Subscriber</code> without causing a
|
|||
|
memory leak, and can be <a href="../dispatcher/struct.WeakDispatch.html#method.upgrade" title="method tracing_core::dispatcher::WeakDispatch::upgrade">upgraded</a> into a <code>Dispatch</code> temporarily when
|
|||
|
the <code>Dispatch</code> must be accessed by the <code>Subscriber</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.register_callsite" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#178-184">source</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section></summary><div class="docblock"><p>Registers a new <a href="../callsite/index.html" title="mod tracing_core::callsite">callsite</a> with this subscriber, returning whether or not
|
|||
|
the subscriber is interested in being notified about the callsite.</p>
|
|||
|
<p>By default, this function assumes that the subscriber’s <a href="../trait.Subscriber.html#tymethod.enabled">filter</a>
|
|||
|
represents an unchanging view of its interest in the callsite. However,
|
|||
|
if this is not the case, subscribers may override this function to
|
|||
|
indicate different interests, or to implement behaviour that should run
|
|||
|
once for every callsite.</p>
|
|||
|
<p>This function is guaranteed to be called at least once per callsite on
|
|||
|
every active subscriber. The subscriber may store the keys to fields it
|
|||
|
cares about in order to reduce the cost of accessing fields by name,
|
|||
|
preallocate storage for that callsite, or perform any other actions it
|
|||
|
wishes to perform once for each callsite.</p>
|
|||
|
<p>The subscriber should then return an <a href="struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a>, indicating
|
|||
|
whether it is interested in being notified about that callsite in the
|
|||
|
future. This may be <code>Always</code> indicating that the subscriber always
|
|||
|
wishes to be notified about the callsite, and its filter need not be
|
|||
|
re-evaluated; <code>Sometimes</code>, indicating that the subscriber may sometimes
|
|||
|
care about the callsite but not always (such as when sampling), or
|
|||
|
<code>Never</code>, indicating that the subscriber never wishes to be notified about
|
|||
|
that callsite. If all active subscribers return <code>Never</code>, a callsite will
|
|||
|
never be enabled unless a new subscriber expresses interest in it.</p>
|
|||
|
<p><code>Subscriber</code>s which require their filters to be run every time an event
|
|||
|
occurs or a span is entered/exited should return <code>Interest::sometimes</code>.
|
|||
|
If a subscriber returns <code>Interest::sometimes</code>, then its <a href="../trait.Subscriber.html#tymethod.enabled" title="method tracing_core::Subscriber::enabled"><code>enabled</code></a> method
|
|||
|
will be called every time an event or span is created from that callsite.</p>
|
|||
|
<p>For example, suppose a sampling subscriber is implemented by
|
|||
|
incrementing a counter every time <code>enabled</code> is called and only returning
|
|||
|
<code>true</code> when the counter is divisible by a specified sampling rate. If
|
|||
|
that subscriber returns <code>Interest::always</code> from <code>register_callsite</code>, then
|
|||
|
the filter will not be re-evaluated once it has been applied to a given
|
|||
|
set of metadata. Thus, the counter will not be incremented, and the span
|
|||
|
or event that corresponds to the metadata will never be <code>enabled</code>.</p>
|
|||
|
<p><code>Subscriber</code>s that need to change their filters occasionally should call
|
|||
|
<a href="../callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>rebuild_interest_cache</code></a> to re-evaluate <code>register_callsite</code> for all
|
|||
|
callsites.</p>
|
|||
|
<p>Similarly, if a <code>Subscriber</code> has a filtering strategy that can be
|
|||
|
changed dynamically at runtime, it would need to re-evaluate that filter
|
|||
|
if the cached results have changed.</p>
|
|||
|
<p>A subscriber which manages fanout to multiple other subscribers
|
|||
|
should proxy this decision to all of its child subscribers,
|
|||
|
returning <code>Interest::never</code> only if <em>all</em> such children return
|
|||
|
<code>Interest::never</code>. If the set of subscribers to which spans are
|
|||
|
broadcast may change dynamically, the subscriber should also never
|
|||
|
return <code>Interest::Never</code>, as a new subscriber may be added that <em>is</em>
|
|||
|
interested.</p>
|
|||
|
<p>See the <a href="../callsite/index.html#registering-callsites" title="mod tracing_core::callsite">documentation on the callsite registry</a> for more
|
|||
|
details on how and when the <code>register_callsite</code> method is called.</p>
|
|||
|
<h5 id="notes"><a href="#notes">Notes</a></h5>
|
|||
|
<p>This function may be called again when a new subscriber is created or
|
|||
|
when the registry is invalidated.</p>
|
|||
|
<p>If a subscriber returns <code>Interest::never</code> for a particular callsite, it
|
|||
|
<em>may</em> still see spans and events originating from that callsite, if
|
|||
|
another subscriber expressed interest in it.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_level_hint" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#230-232">source</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section></summary><div class="docblock"><p>Returns the highest <a href="../struct.Level.html" title="struct tracing_core::Level">verbosity level</a> that this <code>Subscriber</code> will
|
|||
|
enable, or <code>None</code>, if the subscriber does not implement level-based
|
|||
|
filtering or chooses not to implement this method.</p>
|
|||
|
<p>If this method returns a <a href="../struct.Level.html" title="struct tracing_core::Level"><code>Level</code></a>, it will be used as a hint to
|
|||
|
determine the most verbose level that will be enabled. This will allow
|
|||
|
spans and events which are more verbose than that level to be skipped
|
|||
|
more efficiently. Subscribers which perform filtering are strongly
|
|||
|
encouraged to provide an implementation of this method.</p>
|
|||
|
<p>If the maximum level the subscriber will enable can change over the
|
|||
|
course of its lifetime, it is free to return a different value from
|
|||
|
multiple invocations of this method. However, note that changes in the
|
|||
|
maximum level will <strong>only</strong> be reflected after the callsite <a href="struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a>
|
|||
|
cache is rebuilt, by calling the <a href="../callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>callsite::rebuild_interest_cache</code></a>
|
|||
|
function. Therefore, if the subscriber will change the value returned by
|
|||
|
this method, it is responsible for ensuring that
|
|||
|
<a href="../callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>rebuild_interest_cache</code></a> is called after the value of the max
|
|||
|
level changes.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.event_enabled" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#326-329">source</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Determine if an <a href="../struct.Event.html" title="struct tracing_core::Event"><code>Event</code></a> should be recorded.</p>
|
|||
|
<p>By default, this returns <code>true</code> and <code>Subscriber</code>s can filter events in
|
|||
|
<a href="../trait.Subscriber.html#tymethod.event"><code>event</code></a> without any penalty. However, when <code>event</code> is
|
|||
|
more complicated, this can be used to determine if <code>event</code> should be
|
|||
|
called at all, separating out the decision from the processing.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.clone_span" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#393-395">source</a><h4 class="code-header">fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section></summary><div class="docblock"><p>Notifies the subscriber that a <a href="../span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> has been cloned.</p>
|
|||
|
<p>This function is guaranteed to only be called with span IDs that were
|
|||
|
returned by this subscriber’s <code>new_span</code> function.</p>
|
|||
|
<p>Note that the default implementation of this function this is just the
|
|||
|
identity function, passing through the identifier. However, it can be
|
|||
|
used in conjunction with <a href="../trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a> to track the number of handles
|
|||
|
capable of <code>enter</code>ing a span. When all the handles have been dropped
|
|||
|
(i.e., <code>try_close</code> has been called one more time than <code>clone_span</code> for a
|
|||
|
given ID), the subscriber may assume that the span will not be entered
|
|||
|
again. It is then free to deallocate storage for data associated with
|
|||
|
that span, write data from that span to IO, and so on.</p>
|
|||
|
<p>For more unsafe situations, however, if <code>id</code> is itself a pointer of some
|
|||
|
kind this can be used as a hook to “clone” the pointer, depending on
|
|||
|
what that means for the specified pointer.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.drop_span" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#407">source</a><h4 class="code-header">fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, _id: <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: use <code>Subscriber::try_close</code> instead</span></div></span><div class="docblock"><p><strong>This method is deprecated.</strong></p>
|
|||
|
<p>Using <code>drop_span</code> may result in subscribers composed using
|
|||
|
<code>tracing-subscriber</code> crate’s <code>Layer</code> trait from observing close events.
|
|||
|
Use <a href="../trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a> instead.</p>
|
|||
|
<p>The default implementation of this function does nothing.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.try_close" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#445-449">source</a><h4 class="code-header">fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Notifies the subscriber that a <a href="../span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> has been dropped, and returns
|
|||
|
<code>true</code> if there are now 0 IDs that refer to that span.</p>
|
|||
|
<p>Higher-level libraries providing functionality for composing multiple
|
|||
|
subscriber implementations may use this return value to notify any
|
|||
|
“layered” subscribers that this subscriber considers the span closed.</p>
|
|||
|
<p>The default implementation of this method calls the subscriber’s
|
|||
|
<a href="../trait.Subscriber.html#method.drop_span" title="method tracing_core::Subscriber::drop_span"><code>drop_span</code></a> method and returns <code>false</code>. This means that, unless the
|
|||
|
subscriber overrides the default implementation, close notifications
|
|||
|
will never be sent to any layered subscribers. In general, if the
|
|||
|
subscriber tracks reference counts, this method should be implemented,
|
|||
|
rather than <code>drop_span</code>.</p>
|
|||
|
<p>This function is guaranteed to only be called with span IDs that were
|
|||
|
returned by this subscriber’s <code>new_span</code> function.</p>
|
|||
|
<p>It’s guaranteed that if this function has been called once more than the
|
|||
|
number of times <code>clone_span</code> was called with the same <code>id</code>, then no more
|
|||
|
handles that can enter the span with that <code>id</code> exist. This means that it
|
|||
|
can be used in conjunction with <a href="../trait.Subscriber.html#method.clone_span" title="method tracing_core::Subscriber::clone_span"><code>clone_span</code></a> to track the number of
|
|||
|
handles capable of <code>enter</code>ing a span. When all the handles have been
|
|||
|
dropped (i.e., <code>try_close</code> has been called one more time than
|
|||
|
<code>clone_span</code> for a given ID), the subscriber may assume that the span
|
|||
|
will not be entered again, and should return <code>true</code>. It is then free to
|
|||
|
deallocate storage for data associated with that span, write data from
|
|||
|
that span to IO, and so on.</p>
|
|||
|
<p><strong>Note</strong>: since this function is called when spans are dropped,
|
|||
|
implementations should ensure that they are unwind-safe. Panicking from
|
|||
|
inside of a <code>try_close</code> function may cause a double panic, if the span
|
|||
|
was dropped due to a thread unwinding.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.current_span" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#464-466">source</a><h4 class="code-header">fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="../span/struct.Current.html" title="struct tracing_core::span::Current">Current</a></h4></section></summary><div class="docblock"><p>Returns a type representing this subscriber’s view of the current span.</p>
|
|||
|
<p>If subscribers track a current span, they should override this function
|
|||
|
to return <a href="../span/struct.Current.html#tymethod.new" title="struct tracing_core::span::Current"><code>Current::new</code></a> if the thread from which this method is
|
|||
|
called is inside a span, or <a href="../span/struct.Current.html#tymethod.none" title="struct tracing_core::span::Current"><code>Current::none</code></a> if the thread is not
|
|||
|
inside a span.</p>
|
|||
|
<p>By default, this returns a value indicating that the subscriber
|
|||
|
does <strong>not</strong> track what span is current. If the subscriber does not
|
|||
|
implement a current span, it should not override this method.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_raw" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#495-501">source</a><h4 class="code-header">unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.76.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.unit.html">()</a>></h4></section></summary><div class="docblock"><p>If <code>self</code> is the same type as the provided <code>TypeId</code>, returns an untyped
|
|||
|
<code>*const</code> pointer to that type. Otherwise, returns <code>None</code>.</p>
|
|||
|
<p>If you wish to downcast a <code>Subscriber</code>, it is strongly advised to use
|
|||
|
the safe API provided by <a href="#method.downcast_ref"><code>downcast_ref</code></a> instead.</p>
|
|||
|
<p>This API is required for <code>downcast_raw</code> to be a trait method; a method
|
|||
|
signature like <a href="#method.downcast_ref"><code>downcast_ref</code></a> (with a generic type parameter) is not
|
|||
|
object-safe, and thus cannot be a trait method for <code>Subscriber</code>. This
|
|||
|
means that if we only exposed <code>downcast_ref</code>, <code>Subscriber</code>
|
|||
|
implementations could not override the downcasting behavior</p>
|
|||
|
<p>This method may be overridden by “fan out” or “chained” subscriber
|
|||
|
implementations which consist of multiple composed types. Such
|
|||
|
subscribers might allow <code>downcast_raw</code> by returning references to those
|
|||
|
component if they contain components with the given <code>TypeId</code>.</p>
|
|||
|
<h5 id="safety"><a href="#safety">Safety</a></h5>
|
|||
|
<p>The <a href="#method.downcast_ref"><code>downcast_ref</code></a> method expects that the pointer returned by
|
|||
|
<code>downcast_raw</code> is non-null and points to a valid instance of the type
|
|||
|
with the provided <code>TypeId</code>. Failure to ensure this will result in
|
|||
|
undefined behaviour, so implementing <code>downcast_raw</code> is unsafe.</p>
|
|||
|
</div></details></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber" class="impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#504-522">source</a><a href="#impl-dyn+Subscriber" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#506-508">source</a><h4 class="code-header">pub fn <a href="#method.is" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <code>Subscriber</code> is the same type as <code>T</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#512-521">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <code>Subscriber</code> value if it is of type <code>T</code>,
|
|||
|
or <code>None</code> if it isn’t.</p>
|
|||
|
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Send" class="impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#524-542">source</a><a href="#impl-dyn+Subscriber+%2B+Send" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-1" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#526-528">source</a><h4 class="code-header">pub fn <a href="#method.is-1" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-1" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#532-541">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-1" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> value if it is of type <code>T</code>,
|
|||
|
or <code>None</code> if it isn’t.</p>
|
|||
|
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Sync" class="impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#544-562">source</a><a href="#impl-dyn+Subscriber+%2B+Sync" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-2" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#546-548">source</a><h4 class="code-header">pub fn <a href="#method.is-2" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-2" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#552-561">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-2" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <code>[</code>Subscriber<code>] value if it is of type </code>T<code>, or </code>None` if it isn’t.</p>
|
|||
|
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Send+%2B+Sync" class="impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#564-582">source</a><a href="#impl-dyn+Subscriber+%2B+Send+%2B+Sync" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-3" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#566-568">source</a><h4 class="code-header">pub fn <a href="#method.is-3" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-3" class="method"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#572-581">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-3" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> value if it is of type <code>T</code>,
|
|||
|
or <code>None</code> if it isn’t.</p>
|
|||
|
</div></details></div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Subscriber-for-Box%3CS%3E" class="impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#710-793">source</a><a href="#impl-Subscriber-for-Box%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> for <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><S><div class="where">where
|
|||
|
S: <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><section id="method.register_callsite-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#715-717">source</a><a href="#method.register_callsite-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section><section id="method.enabled" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#720-722">source</a><a href="#method.enabled" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section><section id="method.max_level_hint-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#725-727">source</a><a href="#method.max_level_hint-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section><section id="method.new_span" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#730-732">source</a><a href="#method.new_span" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="../span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.record" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#735-737">source</a><a href="#method.record" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="../span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section><section id="method.record_follows_from" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#740-742">source</a><a href="#method.record_follows_from" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.event_enabled-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#745-747">source</a><a href="#method.event_enabled-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.
|
|||
|
S: <a class="trait" href="../trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><section id="method.register_callsite-2" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#800-802">source</a><a href="#method.register_callsite-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section><section id="method.enabled-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#805-807">source</a><a href="#method.enabled-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="../struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.bool.html">bool</a></h4></section><section id="method.max_level_hint-2" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#810-812">source</a><a href="#method.max_level_hint-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section><section id="method.new_span-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#815-817">source</a><a href="#method.new_span-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="../span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.record-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#820-822">source</a><a href="#method.record-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="../span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section><section id="method.record_follows_from-1" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#825-827">source</a><a href="#method.record_follows_from-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="../span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.event_enabled-2" class="method trait-impl"><a class="src rightside" href="../../src/tracing_core/subscriber.rs.html#830-832">source</a><a href="#method.event_enabled-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="../struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https:
|