Categories News

Configuración básica del rastreo de óxido – Andy Balaam Blog

29 de marzo de 2025 [Programming, Programming Languages, Rust, Tech]

Pasé la edad de ayer tratando de encontrar formas de usar la biblioteca de búsqueda de óxido (y el seguimiento de seguimiento) para el caso de usar registro que sea muy simple.

Quiero usar tracing Porque a) se convierte rápidamente en el estándar en todas partes yb) uso una biblioteca que la usa.

Me resulta muy difícil encontrar un ejemplo simple que tome su nivel de registro de RUST_LOG Variables ambientales o utilizar el valor predeterminado no sepele. Esto es lo que produzco:

$ cargo add tracing
$ cargo add tracing-subscriber --features env-filter
use tracing_subscriber::FmtSubscriber;

fn main() {
    const DEFAULT_LOGGING: &str = "myprogram=info,warn";

    let rust_log = std::env::var("RUST_LOG")
        .ok()
        .and_then(|s| if s.is_empty() { None } else { Some(s) })
        .unwrap_or_else(|| DEFAULT_LOGGING.to_owned());

    tracing::subscriber::set_global_default(
        FmtSubscriber::builder().with_env_filter(rust_log).finish(),
    )
    .expect("tracing setup failed");

    // The rest of my program here ...
}

Eso myprogram=info,warn La sección establece el nivel de registro de mi proyecto info y cualquier biblioteca que uso warn. Tienes que reemplazar myprogram con el nombre de su proyecto.

Esto establece el nivel de registro predeterminado que se puede sobrescribir iniciando un programa con EG RUST_LOG=debug ./myprogram Para establecer el nivel a debug
en todas partes o por ejemplo RUST_LOG="myproject=debug,warn" ./myprogram hacer algo más inteligente.

(El formato de la lista de instrucciones separadas por este coma está documentado en tracing_fmt :: builder :: with_env_filter y envfilter.)

Cuando termine, puedo grabar usando un código como este:

use tracing::{debug, info};

pub fn myfun() {
    let x = 3;
    info!("The number is {x}");
    debug!("DEBUG ONLY");
}

Si alguien sabe una forma más simple de lograr este resultado, dígame. Pasé mucho tiempo EnvFilter::with_default_directive Y cosas similares antes de que decidiera verificar el contenido RUST_LOG Manualmente si quiero un valor predeterminado más complejo (no una sola dirección).

Nota al margen: wow, tracing_subscriber ¡Difícil de usar! No pude encontrar un ejemplo simple: el enlace fue bienvenido.

Game Online

Gaming Hub

Game online adalah jenis permainan video yang dimainkan melalui jaringan internet. Game ini memungkinkan pemain untuk berinteraksi dengan pemain lain secara real-time, baik itu dalam bentuk kerja sama, kompetisi, atau eksplorasi dunia virtual bersama-sama.

More From Author