הפעלת רישום ביומן

במאמר הזה מוסבר איך להפעיל רישום ב-Rust. רישום ביומן של בקשות ותשובות במסוף יכול להקל על פתרון בעיות באפליקציות.

דרישות מוקדמות

במדריך הזה נעשה שימוש ב-Secret Manager API, שצריך להפעיל לפני שמתחילים. כדי להפעיל שירותים, פועלים לפי ההוראות שבמדריך למתחילים בנושא שירותים.

הוראות מלאות להגדרת ספריות Rust זמינות במאמר תחילת העבודה עם Rust.

תלויות

צריך להצהיר על יחסי התלות בקובץ Cargo.toml:

cargo add google-cloud-secretmanager-v1 google-cloud-gax

הפעלת רישום ביומן

ספריות הלקוח של Rust משתמשות בתיבת הכלים tracing של Tokio כדי לאסוף נתוני אבחון מובנים, אסינכרוניים ומוגבלים להיקף מסוים. חבילת ה-crate של tracing מפרידה בין מקורות של נתוני אבחון (כמו ספריות הלקוח של Rust) לבין הרכיבים שאוספים את נתוני האבחון האלה באמצעות המאפיין Subscriber. יש הרבה יישומים זמינים ל-Subscriber. בדוגמה הזו נשתמש במינוי fmt שכלול ב-crate‏ tracing-subscriber.

  1. מוסיפים תלות בתיבת tracing-subscriber:

    cargo add tracing tracing-subscriber
    
  2. כותבים פונקציה שמקבלת את מזהה הפרויקט כפרמטר של הפונקציה:

    /// # Parameters
    /// - `project_id`: the id of a Google Cloud project, or its numeric ID.
    ///   For example: `my-project`.
    pub async fn sample(project_id: &str) -> anyhow::Result<()> {

  3. כדי שהדוגמה תהיה קריאה יותר, מוסיפים כמה הצהרות use:

    use google_cloud_gax::paginator::ItemPaginator;
    use google_cloud_secretmanager_v1::client::SecretManagerService;
    use tracing_subscriber;

  4. מאתחלים את מנוי המעקב שמוגדר כברירת מחדל:

    tracing_subscriber::fmt::init();

  5. מאחלים לקוח עם מעקב מופעל. שימו לב לשיחה עם .with_tracing():

    let client = SecretManagerService::builder()
        .with_tracing()
        .build()
        .await?;

  6. לאחר מכן משתמשים בלקוח כדי לשלוח בקשה:

    let mut items = client
        .list_secrets()
        .set_parent(format!("projects/{project_id}"))
        .by_item();
    println!("listing all secrets in project {project_id}");
    while let Some(secret) = items.next().await.transpose()? {
        println!("  {secret:?}");
    }
    println!("DONE");

הפלט הצפוי

הפלט (שעבר עריכה קלה כדי שיהיה קריא) יכלול שורה כמו:

2025-11-03T14:17:31.759452Z  INFO list_secrets{self=SecretManagerService ...

השורה הזו כוללת את הבקשה:

req=ListSecretsRequest { parent: "projects/... }

התשובה:

return=Ok(Response { parts: ..., body: ListSecretsResponse { ...

מידע נוסף

אפשר להגדיר באופן דינמי את מנוי ברירת המחדל שנוצר באמצעות tracing_subscriber::fmt::init() באמצעות משתנה הסביבה RUST_LOG. פרטים נוספים זמינים במסמכי התיעוד.