mirror of
https://github.com/tokio-rs/tracing.git
synced 2025-10-02 07:20:35 +00:00

## Motivation Intra-workspace dependencies can go out of sync if only referencing crates.io, where changing one crate locally and testing the whole library will result in errors stemming from two different versions of the same trait etc. This is hard to keep track of and makes development more difficult than it needs to be. ## Solution Afaik it's common practice to specify both a version and a path as per [the cargo docs][1]. This is what tokio does with its subcrates too. [1]: https://github.com/rust-lang/cargo/blob/master/src/doc/src/reference/specifying-dependencies.md#multiple-locations.
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 demoSubscriber
implementation that mimics the output ofslog-term
'sCompact
formatter.
- tracing-attributes:
attrs-basic
: A simple example of the#[instrument]
attribute.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 thefmt
module intracing-subscriber
, which provides a subscriber implementation that logs traces to the console.fmt-stderr
: Demonstrates overriding the output stream used by thefmt
subscriber.subscriber-filter
: Demonstrates thetracing-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.
- tracing-futures:
futures-proxy-server
: Demonstrates the use oftracing-futures
by implementing a simple proxy server, based on this example fromtokio
.futures-spawn
: A simple demonstration of the relationship between the spans representing spawned futures.
- tracing-tower:
tower-h2-client
: Demonstrates the use oftracing-tower
to instrument a simpletower-h2
HTTP/2 client (based on this example fromtower-h2
).tower-h2-server
: Demonstrates the use oftracing-tower
to instrument a simpletower-h2
HTTP/2 server (based on this example fromtower-h2
).
- tracing-serde:
serde-yak-shave
: Demonstrates the use oftracing-serde
by implementing a subscriber that emits trace output as JSON.
- tracing-log:
hyper-echo
: Demonstrates howtracing-log
can be used to record unstructured logs from dependencies astracing
events, by instrumenting this example fromhyper
, and usingtracing-log
to record logs emitted byhyper
.
The nightly-examples directory contains examples of how tracing
can be used
with async/await. These are kept separate as async/await is currently only
available on nightly Rust toolchains.