es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo utilizar la biblioteca de seguimiento?

Tengo un ejemplo de código muy simple aquí que solo quiere obtener el primer elemento de una lista que le paso. He estado tratando de instrumentar el código con trazas para ayudar a depurar la aplicación, pero francamente la documentación es demasiado sofisticada para que yo la entienda completamente.

use std::fmt::Debug;
use tracing::{span, Level, event};

fn main() {
    pub fn calculate<t: debug,="" const="" n:="" usize="">(data_set: [T; N]) -> (i32, i32) {

    // BoilerPlate de trazado
    event!(Level::INFO, "algo sucedió");
    let span = span!(Level::INFO, "mi_span");
    let _guard = span.enter();

    // Código clave
    let _var = data_set.get(0);
    println!("Output_1: {:?}", data_set.get(0)); 

    event!(Level::DEBUG, "algo sucedió dentro de mi_span");

    // Ignorar
    return (0, 0)
}

let data = [1509, 1857, 1736, 1815, 1576];
let _result = calculate(data);


}

Específicamente aquí, no entiendo dónde puedo ver los registros de eventos! No parecen imprimirse en ninguna ventana o archivo o algo así.

¿Alguien puede dirigirme sobre dónde encontrar estos registros de depuración o proporcionarme una explicación simplificada de cómo usar el paquete de trazado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La macro event! se utiliza para registrar eventos en la aplicación. Estos eventos se pueden ver en la salida de la aplicación, dependiendo de la implementación de registro que esté utilizando.

    Por ejemplo, si está utilizando la biblioteca tracing-subscriber, puede utilizar el suscriptor fmt para imprimir los eventos en la consola. Para ello, puede agregar el siguiente código a su aplicación:

    use tracing_subscriber::fmt::Subscriber;
    
    let subscriber = Subscriber::builder()
        .with<em>max</em>level(Level::DEBUG)
        .finish();
    
    tracing::subscriber::set<em>global</em>default(subscriber).expect("setting default subscriber failed");
    

    Esto permitirá que la aplicación imprima los eventos que se registran con la macro event!.

Comments are closed.