Rust:
Skriva till standardfel
Hur man gör:
Rust erbjuder ett rakt på sak sätt att skriva till stderr med hjälp av eprintln!
-makrot, liknande hur println!
används för stdout. Här är ett grundläggande exempel:
fn main() {
eprintln!("Det här är ett felmeddelande!");
}
Exempelutdata (till standardfel):
Det här är ett felmeddelande!
För mer kontroll över felmeddelandena, som när du vill formatera text eller hantera I/O-resultat, använd funktionen stderr
från modulen std::io
. Denna metod ger en hantering till den globala stderr-strömmen, som du sedan kan skriva till med metoder som write_all
eller writeln
från Write
-egenskapen:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Formaterat felmeddelande: {}", 404).expect("Misslyckades med att skriva till stderr");
}
Exempelutdata (till standardfel):
Formaterat felmeddelande: 404
Om du arbetar i miljöer eller applikationer där du litar på bibliotek för loggning eller felhantering, så är bibliotek som log
och env_logger
populära. Även om de används mer för loggningssyften, är de konfigurerbara och kan dirigera felloggnivåer till stderr. Nedan finns ett enkelt användningsexempel med log
och env_logger
:
Först, lägg till beroendena i din Cargo.toml
:
[dependencies]
log = "0.4"
env_logger = "0.9"
Sedan, ställ in och använd loggningen i din applikation:
fn main() {
env_logger::init();
log::error!("Det här är ett felmeddelande loggat till stderr");
}
När du kör detta program (efter att ha ställt in env_logger
med en lämplig miljövariabel, till exempel, RUST_LOG=error
) kommer felmeddelandet att skrivas ut till stderr, genom att använda loggningsinfrastrukturen.
ERROR: Det här är ett felmeddelande loggat till stderr