53 releases (21 stable)

new 1.14.0 Dec 5, 2025
1.13.1 Oct 16, 2025
1.12.0 Aug 16, 2025
1.11.0 Jun 21, 2025
0.11.0-alpha.7 Jul 31, 2024

#19 in #tracing-metrics

Download history 214/week @ 2025-08-15 96/week @ 2025-08-22 75/week @ 2025-08-29 80/week @ 2025-09-05 153/week @ 2025-09-12 244/week @ 2025-09-19 234/week @ 2025-09-26 196/week @ 2025-10-03 387/week @ 2025-10-10 393/week @ 2025-10-17 335/week @ 2025-10-24 260/week @ 2025-10-31 207/week @ 2025-11-07 301/week @ 2025-11-14 272/week @ 2025-11-21 185/week @ 2025-11-28

1,029 downloads per month
Used in emit_traceparent

MIT/Apache

3MB
9K SLoC

Rust 7.5K SLoC // 0.2% comments JavaScript 2K SLoC // 0.0% comments

Emit diagnostic events to the console.

This library implements a text-based format that's intended for direct end-user consumption, such as in interactive applications.

Getting started

Add emit and emit_term to your Cargo.toml:

[dependencies.emit]
version = "1.14.0"

[dependencies.emit_term]
version = "1.14.0"

Initialize emit using emit_term:

fn main() {
let rt = emit::setup()
.emit_to(emit_term::stdout())
.init();

// Your app code goes here

rt.blocking_flush(std::time::Duration::from_secs(30));
}

emit_term uses a format optimized for human legibility, not for machine processing. You may also want to emit diagnostics to another location, such as OTLP through emit_otlp or a rolling file through emit_file for processing. You can use emit::Setup::and_emit_to to combine multiple emitters:

fn main() {
let rt = emit::setup()
.emit_to(emit_term::stdout())
.and_emit_to(some_other_emitter())
.init();

// Your app code goes here

rt.blocking_flush(std::time::Duration::from_secs(30));
}

Configuration

emit_term has a fixed format, but can be configured to force or disable color output instead of detect it.

To disable colors, call Stdout::colored with the value false:

fn main() {
let rt = emit::setup()
// Disable colors
.emit_to(emit_term::stdout().colored(false))
.init();

// Your app code goes here

rt.blocking_flush(std::time::Duration::from_secs(5));
}

To force colors, call Stdout::colored with the value true:

fn main() {
let rt = emit::setup()
// Force colors
.emit_to(emit_term::stdout().colored(true))
.init();

// Your app code goes here

rt.blocking_flush(std::time::Duration::from_secs(5));
}

emit_term

term

Current docs

Emit diagnostic events to the console.

This library implements a text-based format that's intended for direct end-user consumption, such as in interactive applications.

Dependencies

~2.2–5MB
~98K SLoC