Rust:
การบันทึกล็อก

วิธีการ:

มาตั้งค่าสถานการณ์การ log พื้นฐานใน Rust โดยใช้ log crate, ซึ่งเตรียมเฟซาดสำหรับการ log, และ env_logger, การเตรียมการล็อกสำหรับ log crate ขั้นแรก, เพิ่มพวกเขาไปยัง Cargo.toml ของคุณ:

[dependencies]
log = "0.4.14"
env_logger = "0.9.0"

ตอนนี้, ตั้งค่าและเริ่มต้น logger ใน main.rs ของคุณ:

use log::{info, warn};

fn main() {
    env_logger::init();

    info!("นี่คือข้อความแจ้งข้อมูล");
    warn!("นี่คือข้อความเตือน");
}

เรียกใช้แอพของคุณด้วย RUST_LOG=info cargo run, และคุณจะเห็นผลลัพธ์:

INFO: นี่คือข้อความแจ้งข้อมูล
WARN: นี่คือข้อความเตือน

ทดลองเปลี่ยนแปลงตัวแปรสภาพแวดล้อม RUST_LOG โดยการตั้งค่าเป็น error, warn, info, debug, หรือ trace เพื่อควบคุมความละเอียดของ log ของคุณ

การดำเนินการลึก

ความคิดของการ Log ไม่ใช่สิ่งใหม่; มันได้มีมาตั้งแต่ยุคแรกๆ ของการคอมพิวเตอร์ ก่อนที่การ log จะเป็นที่นิยมในซอฟต์แวร์, นักพัฒนาพึ่งพาวิธีการพื้นฐานเช่นคำสั่งพิมพ์หรือเครื่องมือ debugger เพื่อติดตามการดำเนินการโปรแกรม เมื่อโปรแกรมมีความซับซ้อนเพิ่มขึ้น, ก็เช่นเดียวกับความต้องการสำหรับวิธีการ log ที่มีโครงสร้างมากขึ้น

ใน Rust, log crate ซ่อนรายละเอียดการดําเนินการ log, อนุญาตให้นักพัฒนาเสียบส่วนปลายที่แตกต่างกัน ในขณะที่ env_logger เป็นทางเลือกที่พบบ่อย, ยังมีตัวเลือกอื่น ๆ เช่น fern, slog, หรือ tracing แต่ละตัวมีชุดคุณสมบัติและตัวเลือกการกําหนดค่าของตัวเอง

บางประเด็นที่ควรพิจารณาเมื่อนำการ log มาใช้ประกอบไปด้วย:

  1. ระดับ Log: การควบคุมความละเอียดสําคัญมาก Rust’s log crate กำหนดระดับ log หลายระดับ: error, warn, info, debug, และ trace, ในลำดับความรุนแรงที่ลดลง

  2. ประสิทธิภาพ: การ Log อาจส่งผลต่อประสิทธิภาพ สําคัญต้องใช้อย่างรอบคอบ, โดยทำให้แน่ใจว่าจะหลีกเลี่ยงการ log ในเส้นทางที่สำคัญต่อประสิทธิภาพหรือ log ที่ละเอียดเกินไปในการผลิต

  3. Logging ที่มีโครงสร้าง: แนวปฏิบัติที่ทันสมัยรวมถึงการ log ที่มีโครงสร้าง, ที่ไวต์ล็อกในรูปแบบที่เครื่องสามารถอ่านได้เช่น JSON ห้องสมุดเช่น slog อนุญาตให้มีการ log ที่มีโครงสร้างใน Rust, ซึ่งสามารถถูกดัชนีและสืบค้นโดยใช้ระบบการจัดการ log เช่น ELK Stack หรือ Splunk

  4. Logging แบบอะซิงโครนัส: เพื่อลดผลกระทบต่อแอพพลิเคชั่นหลัก, การ log สามารถทำได้แบบอะซิงโครนัส ซึ่งบ่อยครั้งที่ทำโดยให้ห้องสมุดการ log เขียนลงในคิวในหน่วยความจำ, และกระบวนการแยกต่างหากประมวลผลคิวและเขียน log ไปยังจุดหมาย

  5. การกำหนดค่า: หลายเฟรมเวิร์กการ log สนับสนุนการกำหนดค่าผ่านตัวแปรสภาพแวดล้อม, ไฟล์การกำหนดค่า, และ/หรือโค้ด ความยืดหยุ่นนี้เป็นสิ่งสำคัญสำหรับการปรับเอาต์พุตในสภาพแวดล้อมที่แตกต่างกัน (การพัฒนา, staging, การผลิต)

ดูเพิ่มเติม