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