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.
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.