Rust:
Scrivere sull'errore standard
Come fare:
Rust offre un modo diretto per scrivere su stderr utilizzando la macro eprintln!, simile a come println! viene usata per stdout. Ecco un esempio basilare:
fn main() {
eprintln!("Questo è un messaggio di errore!");
}Output di esempio (a stderr):
Questo è un messaggio di errore!Per avere più controllo sui messaggi di errore, come quando si desidera formattare il testo o gestire i risultati I/O, utilizzare la funzione stderr dal modulo std::io. Questo metodo fornisce un handle al flusso globale stderr, sul quale è possibile scrivere utilizzando metodi come write_all o writeln dal trait Write:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Messaggio di errore formattato: {}", 404).expect("Impossibile scrivere su stderr");
}Output di esempio (a stderr):
Messaggio di errore formattato: 404Se stai lavorando in ambienti o applicazioni dove fai affidamento su librerie per il logging o la gestione degli errori, librerie come log e env_logger sono popolari. Anche se sono usate più per scopi di logging, sono configurabili e possono indirizzare i livelli di log degli errori a stderr. Di seguito è riportato un esempio di utilizzo semplice con log e env_logger:
Prima, aggiungi le dipendenze al tuo Cargo.toml:
[dependencies]
log = "0.4"
env_logger = "0.9"Poi, configura e usa il logging nella tua applicazione:
fn main() {
env_logger::init();
log::error!("Questo è un messaggio di errore loggato su stderr");
}Eseguendo questo programma (dopo aver configurato env_logger con una variabile di ambiente appropriata, per esempio, RUST_LOG=error) verrà visualizzato il messaggio di errore su stderr, utilizzando l’infrastruttura di logging.
ERROR: Questo è un messaggio di errore loggato su stderr