#tracing #binary-format #binary #format

tracing-tape

Binary format specification for the tracing crate

2 releases

new 0.1.1 Nov 19, 2024
0.1.0 Nov 10, 2024

#92 in #binary-format

Download history 98/week @ 2024-11-07 99/week @ 2024-11-14

197 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

20KB
418 lines

Tracing Tape

Dead-simple debugging and profiling of (distributed) Rust applications using the tracing crate. Record trace files and view them within within seconds without complex setup or configuration.

Trace Deck Screenshot

Setup

  1. Add the following dependencies to your application:
cargo add tracing tracing-subscriber tracing-tape-recorder
  1. Add the following code to your application:
use tracing::trace_span;
use tracing_subscriber::{fmt, layer::SubscriberExt, Registry};
use tracing_tape_recorder::TapeRecorder;

let subscriber = Registry::default().with(TapeRecorder::default());
let guard = tracing::subscriber::set_default(subscriber);

// ...

drop(guard);

Running your application will now generate a {name}-{timestamp}.tape file in the current working directory.

Note: it is preferred to use set_default instead of set_global_default to ensure the subsriber is dropped when the guard goes out of scope. See #7 for more information.

Viewing Tape Files

You can use the trace-deck application to view the recorded tape files either by running trace-deck filename.tape or by dragging the files into the window. You can load multiple files simultaneously which can be useful for analyzing workflows across multiple applications (e.g., client-server interactions). Have a look at the getting started guide.

Crates

  • tracing-tape: defines the format of the tape files.
  • tracing-tape-recorder: records trace events to tape files.
  • tracing-tape-parser: parses recorded tape files.
  • trace-deck: GUI application for viewing tape files.

Known Issues

  • Currently there is no way, to configure the tape recorder (#6, #8).
  • Recent data is lost when the tape recorder is not properly dropped (#7).
  • Loading large tape files can be slow (#9).
  • Recording tape files will occasionally cause lag spikes (#10).

Dependencies

~2.1–3MB
~56K SLoC