Rust Tracing Basic Setup – Blog Andy Balaam

29 Maret 2025 [Programming, Programming Languages, Rust, Tech]

Saya menghabiskan usia kemarin mencoba mencari cara untuk menggunakan perpustakaan penelusuran Rust (dan pelacak pelacakan) untuk kasus penggunaan logging yang sangat sederhana.

Saya ingin menggunakan tracing Karena a) dengan cepat menjadi standar di mana -mana dan b) Saya menggunakan perpustakaan yang menggunakannya.

Saya merasa sangat sulit untuk menemukan contoh sederhana yang mengambil level lognya dari RUST_LOG variabel lingkungan, atau menggunakan default non-sepele. Inilah yang saya hasilkan:

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

Itu myprogram=info,warn Bagian menetapkan level log proyek saya info dan perpustakaan apa pun yang saya gunakan warn. Anda harus mengganti myprogram dengan nama proyek Anda.

Ini menetapkan tingkat logging default yang dapat ditimpa dengan meluncurkan program dengan EG RUST_LOG=debug ./myprogram Untuk mengatur level ke debug
di mana -mana atau mis RUST_LOG="myproject=debug,warn" ./myprogram untuk melakukan sesuatu yang lebih pintar.

(Format daftar arahan yang dipisahkan koma ini didokumentasikan di Tracing_fmt :: Builder :: with_env_filter dan Envfilter.)

Setelah selesai, saya dapat mencatat menggunakan kode seperti ini:

use tracing::{debug, info};

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

Jika ada yang tahu cara yang lebih sederhana untuk mencapai hasil ini, beri tahu saya. Saya menghabiskan waktu lama mengutak -atik EnvFilter::with_default_directive dan hal -hal serupa sebelum saya memutuskan untuk memeriksa isinya RUST_LOG Secara manual jika saya menginginkan default yang lebih kompleks (bukan arahan tunggal).

Catatan samping: wow, tracing_subscriber sulit digunakan! Saya tidak dapat menemukan contoh sederhana – tautan disambut.

Game News

Gaming Center

Gaming center adalah sebuah tempat atau fasilitas yang menyediakan berbagai perangkat dan layanan untuk bermain video game, baik di PC, konsol, maupun mesin arcade. Gaming center ini bisa dikunjungi oleh siapa saja yang ingin bermain game secara individu atau bersama teman-teman. Beberapa gaming center juga sering digunakan sebagai lokasi turnamen game atau esports.