logo
pub fn fmt() -> SubscriberBuilder
Expand description

Returns a new SubscriberBuilder for configuring a formatting subscriber.

This is essentially shorthand for [SubscriberBuilder::default()].

Examples

Using init to set the default subscriber:

tracing_subscriber::fmt().init();

Configuring the output format:


tracing_subscriber::fmt()
    // Configure formatting settings.
    .with_target(false)
    .with_timer(tracing_subscriber::fmt::time::uptime())
    .with_level(true)
    // Set the collector as the default.
    .init();

try_init returns an error if the default subscriber could not be set:

use std::error::Error;

fn init_subscriber() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
    tracing_subscriber::fmt()
        // Configure the collector to emit logs in JSON format.
        .json()
        // Configure the collector to flatten event fields in the output JSON objects.
        .flatten_event(true)
        // Set the collector as the default, returning an error if this fails.
        .try_init()?;

    Ok(())
}

Rather than setting the subscriber as the default, finish returns the constructed subscriber, which may then be passed to other functions:

let subscriber = tracing_subscriber::fmt()
    .with_max_level(tracing::Level::DEBUG)
    .compact()
    .finish();

tracing::subscriber::with_default(subscriber, || {
    // the subscriber will only be set as the default
    // inside this closure...
})