การเขียนไปยังข้อผิดพลาดมาตรฐาน

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