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