Rust:
Запис до стандартної помилки
Як це зробити:
Rust надає простий спосіб запису в stderr за допомогою макросу eprintln!, подібно до того, як використовується println! для stdout. Ось базовий приклад:
fn main() {
eprintln!("Це повідомлення про помилку!");
}Приклад виводу (у стандартний потік помилок):
Це повідомлення про помилку!Для більшого контролю над повідомленнями про помилки, наприклад, коли ви хочете форматувати текст чи обробляти результати введення/виведення, використовуйте функцію stderr з модуля std::io. Цей метод надає дескриптор до глобального потоку stderr, до якого ви потім можете записувати за допомогою методів, таких як write_all або writeln з трейта Write:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Форматоване повідомлення про помилку: {}", 404).expect("Не вдалося записати в stderr");
}Приклад виводу (у стандартний потік помилок):
Форматоване повідомлення про помилку: 404Якщо ви працюєте в середовищах або додатках, де ви покладаєтеся на бібліотеки для журналювання або обробки помилок, такі бібліотеки, як log та env_logger, є популярними. Хоча вони використовуються більше для цілей журналювання, вони є налаштовуваними і можуть направляти рівні журналу помилок до stderr. Нижче наведено простий приклад використання log та env_logger:
Спочатку додайте залежності до вашого Cargo.toml:
[dependencies]
log = "0.4"
env_logger = "0.9"Потім налаштуйте та використовуйте журналювання у вашому додатку:
fn main() {
env_logger::init();
log::error!("Це повідомлення про помилку, записане до stderr");
}Запуск цієї програми (після налаштування env_logger з відповідною змінною оточення, наприклад, RUST_LOG=error) виведе повідомлення про помилку в stderr, використовуючи інфраструктуру журналювання.
ERROR: Це повідомлення про помилку, записане до stderr