Crate tracing_human_layer

Crate tracing_human_layer 

Source
Expand description

§tracing-human-layer

docs.rs Crates.io

A human-friendly and colorful terminal output tracing_subscriber::Layer for tracing.

Features:

  • Line-wrapping (optional)
  • Colorful output (customizable and optional)
  • Blank lines between long log messages
  • One-line format for short log messages with one short field

A screenshot of tracing-human-layer output

§Quick start

use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_human_layer::HumanLayer;

tracing_subscriber::registry()
  .with(HumanLayer::new())
  .init();

§Performance

TL;DR: Half of the cost of logging is writing to stderr.

I haven’t done too much performance work on tracing-human-layer, but I do have a couple benchmarks. It seems to take 1.92-6.17µs to format an event (including emitting a span and event), with the exact cost depending on whether or not color output (HumanLayer::with_color_output) or text wrapping (HumanLayer::with_textwrap_options) is enabled.

Formatting an event and writing it to stderr takes 12.55µs, so actually showing the logs to the user is about 2× slower than just formatting them.

Structs§

HumanLayer
A human-friendly tracing_subscriber::Layer.
LayerStyles
A simple ProvideStyle implementation which stores a style for each tracing::Level.
Style
The style for formatting a tracing event.
TextWrapOptionsOwned
Options for wrapping and filling text. Like textwrap::Options, but owned.

Traits§

ProvideStyle
A value that can provide a Style for a given tracing event.