Rust:
רישום

איך ל:

בואו נקים תרחיש רישום בסיסי ב-Rust באמצעות חבילת ה-log, שמספקת ממשק רישום, ו-env_logger, מימוש לרישום עבור חבילת ה-log. תחילה, הוסיפו אותם ל-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 כדי לשלוט ברמת התרחיש של הרישומים.

צלילה לעומק

המושג של רישום אינו חדש; הוא קיים מתחילת ימי המחשוב. לפני שרישום הפך לנפוץ בתוכנה, מפתחים הסתמכו על שיטות פרימיטיביות כמו הדפסות או כלים לניפוי באגים כדי לעקוב אחר ביצועי התוכנית. ככל שהתוכניות הפכו מורכבות יותר, כך גדלה גם הצורך בגישות מובנות יותר לרישום.

ב-Rust, חבילת ה-log מסתירה את פרטי המימוש של הרישום, מה שמאפשר למפתחים לחבר backends שונים לרישום. למרות ש-env_logger הוא בחירה נפוצה, קיימות חלופות כמו fern, slog, או tracing עם סט של תכונות ואפשרויות תצורה משלהן.

חלק מהשיקולים בעת הטמעת רישום כוללים:

  1. רמות רישום: שליטה ברמת המידע היא קריטית. חבילת ה-log של Rust מגדירה מספר רמות רישום: error, warn, info, debug, ו-trace, בסדר יורד של חומרה.

  2. ביצועים: רישום יכול להשפיע על ביצועים. חיוני להשתמש בו בחוכמה, כדי למנוע רישום בנתיבי ביצועים קריטיים או רישומים מאוד מילוליים בייצור.

  3. רישום מובנה: המתקנים המודרניים כוללים רישום מובנה, שבו הרישומים נכתבים בפורמט קריא-מכונה כמו JSON. חבילות כמו slog מאפשרות רישום מובנה ב-Rust, שניתן לאינדוקס ולחפש בהם באמצעות מערכות ניהול רישומים כמו ELK Stack או Splunk.

  4. רישום אסינכרוני: כדי למזער השפעה על היישום הראשי, ניתן לבצע רישום באופן אסינכרוני. זה לעיתים קרובות מושג על ידי הוספת הרישומים לתור בזיכרון, ופועל בניפרד מעבד את התור וכותב את הרישומים ליעד.

  5. תצורה: רבים מפרייםוורקי הרישום תומכים בתצורה דרך משתני סביבה, קבצי תצורה ו/או קוד. גמישות זו חשובה לכוונון הפלט בסביבות שונות (פיתוח, בדיקה, ייצור).

ראה גם