Developer-first diagnostics for Rust applications
emit is a stable, complete, and capable framework for adding structured diagnostics to your Rust applications with a simple, powerful data model and an expressive syntax inspired by Message Templates. emit's guiding design principle is low ceremony, low cognitive-load.
This readme covers just enough to give you an idea of what emit is. For a proper treatment, see:
Getting started
Add emit to your Cargo.toml:
[]
= "1.14.0"
# Optional
= ["serde"]
# Optional
[]
= "1.14.0"
# Optional
[]
= "1"
= ["derive"]
Initialize emit in your main.rs and start peppering diagnostics throughout your application:

emit has a capable syntax for writing events that's different from the standard format! trait. You can read more about it in the guide.
Tracing
emit can produce trace data that's compatible with OpenTelemetry and standard tracing tools, like Zipkin.

The above screenshot was generated by this example application.
See the guide for details.
Metrics
emit can produce metric data that's compatible with OpenTelemetry and standard metric tools, like Prometheus.

The above screenshot was generated by this example application.
See the guide for details.
Quick debugging
emit has a dbg! macro like the standard library's which you can use for quick-and-dirty debugging:
dbg!;
See the guide for details.
Stability
emit has a complete and stable API that's suitable for production environments.