Rust:
การเขียนไปยังข้อผิดพลาดมาตรฐาน
วิธีการ:
Rust ให้วิธีการที่ตรงไปตรงมาในการเขียนไปยัง stderr โดยใช้ macro eprintln!
คล้ายกับวิธีใช้ println!
สำหรับ stdout นี่คือตัวอย่างพื้นฐาน:
fn main() {
eprintln!("This is an error message!");
}
ตัวอย่างผลลัพธ์ (ไปยัง standard error):
This is an error message!
สำหรับการควบคุมข้อความผิดพลาดได้มากขึ้น เช่นเมื่อคุณต้องการจัดรูปแบบข้อความหรือจัดการกับผลลัพธ์ของ I/O ให้ใช้ฟังก์ชัน stderr
จากโมดูล std::io
วิธีนี้จะให้ตัวจัดการไปยังกระแส stderr ทั่วโลก ซึ่งคุณสามารถเขียนไปยังมันได้โดยใช้เมท็อด เช่น write_all
หรือ writeln
จาก trait Write
:
use std::io::{self, Write};
fn main() {
let stderr = io::stderr();
let mut handle = stderr.lock();
writeln!(handle, "Formatted error message: {}", 404).expect("Failed to write to stderr");
}
ตัวอย่างผลลัพธ์ (ไปยัง standard error):
Formatted error message: 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!("This is an error message logged to stderr");
}
การเรียกใช้โปรแกรมนี้ (หลังจากตั้งค่า env_logger
ด้วยตัวแปรสภาพแวดล้อมที่เหมาะสม เช่น RUST_LOG=error
) จะส่งผลให้ข้อความผิดพลาดแสดงใน stderr โดยใช้โครงสร้างพื้นฐานการบันทึกข้อมูล
ERROR: This is an error message logged to stderr