tracing/examples/README.md
ilsubyeega d3fdb5224b chore: corrected typos in the example readme (#2718)
## Motivation

I was checking the example from `/examples/` and saw that
some of the module names were incorrect in README, so I
fixed them.

## Solution

Changed the incorrect name to the correct name.
2025-06-03 09:47:35 +02:00

84 lines
4.6 KiB
Markdown

# Tracing Examples
This directory contains a collection of examples that demonstrate the use of the
`tracing` ecosystem:
- **tracing**:
+ `counters`: Implements a very simple metrics system to demonstrate how
subscribers can consume field values as typed data.
+ `sloggish`: A demo `Subscriber` implementation that mimics the output of
`slog-term`'s `Compact` formatter.
- **tracing-attributes**:
+ `attrs-basic`: A simple example of the `#[instrument]` attribute.
+ `attrs-literal-field-names`: Demonstrates using literal field names rather
than rust tokens..
+ `attrs-args`: An example implementing a simple recursive calculation of
Fibonacci numbers, to demonstrate how the `#[instrument]` attribute can
record function arguments.
- **tracing-subscriber**:
+ `fmt`: Demonstrates the use of the [`fmt`] module in `tracing-subscriber`,
which provides a subscriber implementation that logs traces to the console.
This example uses the default formatter ([`format::Full`]).
+ `fmt-stderr`: Demonstrates overriding the output stream used by the `fmt`
subscriber.
+ `fmt-pretty`: Demonstrates the output of the [`format::Pretty`] formatter in
[`tracing-subscriber::fmt`][`fmt`].
+ `fmt-compact`: Demonstrates the output of the [`format::Compact`] formatter in
[`tracing-subscriber::fmt`][`fmt`].
+ `fmt-json`: Demonstrates the output of the [`format::Json`] formatter in
[`tracing-subscriber::fmt`][`fmt`].
+ `fmt-custom-field`: Demonstrates overriding how the [`fmt`] subscriber formats
fields on spans and events.
+ `fmt-custom-event`: Demonstrates overriding how the [`fmt`] subscriber formats
events.
+ `fmt-multiple-writers`: demonstrates how [`fmt::Layer`] can write
to multiple destinations (in this instance, stdout and a file) simultaneously.
+ `fmt-source-locations`: demonstrates displaying source code locations
with [`fmt::Layer`].
+ `subscriber-filter`: Demonstrates the `tracing-subscriber::filter` module,
which provides a layer which adds configurable filtering to a subscriber
implementation.
+ `tower-load`: Demonstrates how dynamically reloadable filters can be used to
debug a server under load in production.
+ `journald`: Demonstrates how to use [`fmt`] and `journald` layers to output to
both the terminal and the system journal.
+ `toggle-layers` : Demonstrates how Layers can be wrapped with an `Option` allowing
them to be dynamically toggled.
- **tracing-futures**:
+ `spawny-thing`: Demonstrates the use of the `#[instrument]` attribute macro
asynchronous functions.
+ `tokio-spawny-thing.rs`: Similar to `spawny-thingy`, but with the additional
demonstration instrumenting [concurrent tasks][tasks] created with
`tokio::spawn`.
+ `futures-proxy-server`: Demonstrates the use of `tracing-futures` by
implementing a simple proxy server, based on [this example][tokio-proxy]
from `tokio`.
+ `async-fn`: Demonstrates how asynchronous functions can be
instrumented.
+ `echo`: Demonstrates a `tracing`-instrumented variant of Tokio's `echo` example.
- **tracing-flame**:
+ `inferno-flame`: Demonstrates the use of `tracing-flame` to generate a flamegraph
from spans.
- **tracing-tower**:
+ `tower-client`: Demonstrates the use of `tracing-tower` to instrument a
simple `tower` HTTP/1.1 client.
+ `tower-server`: Demonstrates the use of `tracing-tower` to instrument a
simple `tower` HTTP/1.1 server.
- **tracing-serde**:
+ `serde-yak-shave`: Demonstrates the use of `tracing-serde` by implementing a
subscriber that emits trace output as JSON.
- **tracing-log**:
+ `hyper-echo`: Demonstrates how `tracing-log` can be used to record
unstructured logs from dependencies as `tracing` events, by instrumenting
[this example][echo] from `hyper`, and using `tracing-log` to record logs
emitted by `hyper`.
[tasks]: (https://docs.rs/tokio/0.2.21/tokio/task/index.html)
[tokio-proxy]: https://github.com/tokio-rs/tokio/blob/v0.1.x/tokio/examples/proxy.rs
[echo]: https://github.com/hyperium/hyper/blob/0.12.x/examples/echo.rs
[`fmt`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/index.html
[`format::Full`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Full.html
[`format::Pretty`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Pretty.html
[`format::Compact`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Compact.html
[`format::Json`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Json.html
[`fmt::Layer`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/struct.Layer.html