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: 404Om 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