edlang/tracing_subscriber/registry/index.html
2024-03-27 11:12:16 +00:00

39 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="Storage for span data shared by multiple `Layer`s."><title>tracing_subscriber::registry - 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-5bc39a1768837dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="tracing_subscriber" data-themes="" data-resource-suffix="" data-rustdoc-version="1.77.0 (aedd173a2 2024-03-17)" data-channel="1.77.0" data-search-js="search-dd67cee4cfa65049.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-4c98445ec4002617.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-48f368f3872407c8.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-04d5337699b92874.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 mod"><!--[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" title="show sidebar"></button><a class="logo-container" href="../../tracing_subscriber/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_subscriber/index.html"><img src="https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png" alt="logo"></a><h2><a href="../../tracing_subscriber/index.html">tracing_subscriber</a><span class="version">0.3.18</span></h2></div><h2 class="location"><a href="#">Module registry</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></section><h2><a href="../index.html">In crate tracing_subscriber</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../tracing_subscriber/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>Module <a href="../index.html">tracing_subscriber</a>::<wbr><a class="mod" href="#">registry</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_subscriber/registry/mod.rs.html#1-598">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Storage for span data shared by multiple <a href="../layer/trait.Layer.html" title="trait tracing_subscriber::layer::Layer"><code>Layer</code></a>s.</p>
<h3 id="using-the-span-registry"><a class="doc-anchor" href="#using-the-span-registry">§</a>Using the Span Registry</h3>
<p>This module provides the <a href="struct.Registry.html" title="struct tracing_subscriber::registry::Registry"><code>Registry</code></a> type, a <a href="../../tracing_core/subscriber/trait.Subscriber.html" title="trait tracing_core::subscriber::Subscriber"><code>Subscriber</code></a> implementation
which tracks per-span data and exposes it to <a href="../layer/trait.Layer.html" title="trait tracing_subscriber::layer::Layer"><code>Layer</code></a>s. When a <code>Registry</code>
is used as the base <code>Subscriber</code> of a <code>Layer</code> stack, the
<a href="../layer/struct.Context.html" title="struct tracing_subscriber::layer::Context"><code>layer::Context</code></a> type will provide methods allowing <code>Layer</code>s to
<a href="../layer/struct.Context.html#method.span" title="method tracing_subscriber::layer::Context::span">look up span data</a> stored in the registry. While <a href="struct.Registry.html" title="struct tracing_subscriber::registry::Registry"><code>Registry</code></a> is a
reasonable default for storing spans and events, other stores that implement
<a href="trait.LookupSpan.html" title="trait tracing_subscriber::registry::LookupSpan"><code>LookupSpan</code></a> and <a href="../../tracing_core/subscriber/trait.Subscriber.html" title="trait tracing_core::subscriber::Subscriber"><code>Subscriber</code></a> themselves (with <a href="trait.SpanData.html" title="trait tracing_subscriber::registry::SpanData"><code>SpanData</code></a> implemented
by the per-span data they store) can be used as a drop-in replacement.</p>
<p>For example, we might create a <code>Registry</code> and add multiple <code>Layer</code>s like so:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tracing_subscriber::{registry::Registry, Layer, prelude::<span class="kw-2">*</span>};
<span class="kw">let </span>subscriber = Registry::default()
.with(FooLayer::new())
.with(BarLayer::new());</code></pre></div>
<p>If a type implementing <code>Layer</code> depends on the functionality of a <code>Registry</code>
implementation, it should bound its <code>Subscriber</code> type parameter with the
<a href="trait.LookupSpan.html" title="trait tracing_subscriber::registry::LookupSpan"><code>LookupSpan</code></a> trait, like so:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tracing_subscriber::{registry, Layer};
<span class="kw">use </span>tracing_core::Subscriber;
<span class="kw">pub struct </span>MyLayer {
<span class="comment">// ...
</span>}
<span class="kw">impl</span>&lt;S&gt; Layer&lt;S&gt; <span class="kw">for </span>MyLayer
<span class="kw">where
</span>S: Subscriber + <span class="kw">for</span>&lt;<span class="lifetime">'a</span>&gt; registry::LookupSpan&lt;<span class="lifetime">'a</span>&gt;,
{
<span class="comment">// ...
</span>}</code></pre></div>
<p>When this bound is added, the <code>Layer</code> implementation will be guaranteed
access to the <a href="../layer/struct.Context.html" title="struct tracing_subscriber::layer::Context"><code>Context</code></a> methods, such as <a href="../layer/struct.Context.html#method.span" title="method tracing_subscriber::layer::Context::span"><code>Context::span</code></a>, that
require the root subscriber to be a registry.</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Data.html" title="struct tracing_subscriber::registry::Data">Data</a></div><div class="desc docblock-short">Span data stored in a <a href="struct.Registry.html" title="struct tracing_subscriber::registry::Registry"><code>Registry</code></a>.</div></li><li><div class="item-name"><a class="struct" href="struct.Extensions.html" title="struct tracing_subscriber::registry::Extensions">Extensions</a></div><div class="desc docblock-short">An immutable, read-only reference to a Spans extensions.</div></li><li><div class="item-name"><a class="struct" href="struct.ExtensionsMut.html" title="struct tracing_subscriber::registry::ExtensionsMut">ExtensionsMut</a></div><div class="desc docblock-short">An mutable reference to a Spans extensions.</div></li><li><div class="item-name"><a class="struct" href="struct.Registry.html" title="struct tracing_subscriber::registry::Registry">Registry</a></div><div class="desc docblock-short">A shared, reusable store for spans.</div></li><li><div class="item-name"><a class="struct" href="struct.Scope.html" title="struct tracing_subscriber::registry::Scope">Scope</a></div><div class="desc docblock-short">An iterator over the parents of a span, ordered from leaf to root.</div></li><li><div class="item-name"><a class="struct" href="struct.ScopeFromRoot.html" title="struct tracing_subscriber::registry::ScopeFromRoot">ScopeFromRoot</a></div><div class="desc docblock-short">An iterator over the parents of a span, ordered from root to leaf.</div></li><li><div class="item-name"><a class="struct" href="struct.SpanRef.html" title="struct tracing_subscriber::registry::SpanRef">SpanRef</a></div><div class="desc docblock-short">A reference to [span data] and the associated <a href="trait.LookupSpan.html" title="trait tracing_subscriber::registry::LookupSpan">registry</a>.</div></li></ul><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.LookupSpan.html" title="trait tracing_subscriber::registry::LookupSpan">LookupSpan</a></div><div class="desc docblock-short">Provides access to stored span data.</div></li><li><div class="item-name"><a class="trait" href="trait.SpanData.html" title="trait tracing_subscriber::registry::SpanData">SpanData</a></div><div class="desc docblock-short">A stored representation of data associated with a span.</div></li></ul></section></div></main></body></html>