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