Rust:
Kirjoittaminen standardivirheeseen

Kuinka:

Rust tarjoaa suoraviivaisen tavan kirjoittaa stderr:iin käyttämällä eprintln!-makroa, samankaltaisesti kuin println! käytetään stdoutille. Tässä on perusesimerkki:

fn main() {
    eprintln!("Tämä on virheilmoitus!");
}

Esimerkkituloste (standardivirheeseen):

Tämä on virheilmoitus!

Jos haluat enemmän kontrollia virheilmoitusten yli, kuten tekstiä muotoillessasi tai I/O-tuloksia käsitellessäsi, käytä stderr funktiota std::io moduulista. Tämä menetelmä tarjoaa kahvan globaaliin stderr-virtaan, johon voit sitten kirjoittaa käyttäen esimerkiksi write_all tai writeln metodeja Write piirteestä:

use std::io::{self, Write};

fn main() {
    let stderr = io::stderr();
    let mut kahva = stderr.lock();
    
    writeln!(kahva, "Muotoiltu virheilmoitus: {}", 404).expect("Kirjoittaminen stderr:iin epäonnistui");
}

Esimerkkituloste (standardivirheeseen):

Muotoiltu virheilmoitus: 404

Jos työskentelet ympäristöissä tai sovelluksissa, joissa tukeudut kirjastoihin lokitukseen tai virheenkäsittelyyn, log ja env_logger kirjastot ovat suosittuja. Vaikka niitä käytetään enemmän lokitustarkoituksiin, ne ovat mukautettavissa ja voivat ohjata virhelokitustasot stderr:iin. Alla on yksinkertainen käyttöesimerkki log ja env_logger kanssa:

Lisää ensin riippuvuudet Cargo.toml-tiedostoosi:

[dependencies]
log = "0.4"
env_logger = "0.9"

Sitten, aseta ja käytä loki sovelluksessasi:

fn main() {
    env_logger::init();
    log::error!("Tämä on virheilmoitus, joka on kirjattu stderr:iin");
}

Tämän ohjelman suorittaminen (asetettuasi env_logger asianmukaisella ympäristömuuttujalla, esimerkiksi RUST_LOG=error) tulostaa virheilmoituksen stderr:iin, hyödyntäen lokitusinfrastruktuuria.

ERROR: Tämä on virheilmoitus, joka on kirjattu stderr:iin