Rust:
Pisanie do standardowego błędu
Jak to zrobić:
Rust oferuje prosty sposób na pisanie do stderr za pomocą makra eprintln!
, podobnie jak println!
jest używane dla stdout. Oto podstawowy przykład:
fn main() {
eprintln!("To jest komunikat o błędzie!");
}
Przykładowe wyjście (do standardowego błędu):
To jest komunikat o błędzie!
Aby mieć większą kontrolę nad komunikatami o błędach, na przykład kiedy chcesz formatować tekst lub obsługiwać wyniki operacji I/O, użyj funkcji stderr
z modułu std::io
. Ta metoda dostarcza uchwyt do globalnego strumienia stderr, do którego możesz następnie pisać, używając metod takich jak write_all
lub writeln
z cechy Write
:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Sformatowany komunikat o błędzie: {}", 404).expect("Nie udało się zapisać do stderr");
}
Przykładowe wyjście (do standardowego błędu):
Sformatowany komunikat o błędzie: 404
Jeśli pracujesz w środowiskach lub aplikacjach, gdzie polegasz na bibliotekach do logowania lub obsługi błędów, popularne są takie biblioteki jak log
i env_logger
. Chociaż są one używane bardziej do celów logowania, są konfigurowalne i mogą kierować poziomy logowania błędów do stderr. Poniżej znajduje się prosty przykład użycia log
i env_logger
:
Najpierw dodaj zależności do pliku Cargo.toml
:
[dependencies]
log = "0.4"
env_logger = "0.9"
Następnie, skonfiguruj i użyj logowania w swojej aplikacji:
fn main() {
env_logger::init();
log::error!("Ten komunikat o błędzie został zalogowany do stderr");
}
Uruchomienie tego programu (po skonfigurowaniu env_logger
z odpowiednią zmienną środowiskową, na przykład RUST_LOG=error
) spowoduje wyjście komunikatu o błędzie do stderr, wykorzystując infrastrukturę logowania.
ERROR: Ten komunikat o błędzie został zalogowany do stderr