تسجيل الدخول في Rust: نظرة عامة على أفضل المكتبات والأدوات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تسجيل الدخول لـ Rust: أفضل الحلول



يُعد تسجيل الدخول أحد المكونات الرئيسية لأي تطبيق إنتاجي. في نظام Rust البيئي، توجد مجموعة ناضجة من الأدوات التي تسمح بضبط جمع السجلات وتنسيقها وإخراجها بمرونة. في هذه المقالة، سنستعرض المكتبات الرئيسية وإمكانياتها وأمثلة على استخدامها.



1. كريت log — تجريد لتسجيل الدخول



مكتبة log هي أساس نظام تسجيل الدخول بالكامل في Rust. توفر واجهة (facade) — مجموعة من السمات (traits) والماكرو (macros) التي لا تعتمد على خلفية معينة. تكتب الكود مرة واحدة، وتضبط إخراج السجلات من خلال مسجل خارجي.



الماكرو الرئيسية:

  • error! — أخطاء حرجة
  • warn! — تحذيرات
  • info! — رسائل معلوماتية
  • debug! — معلومات تصحيح الأخطاء
  • trace! — تتبع تفصيلي


مثال على الاستخدام:

use log::{info, warn, error};

fn main() { // قبل الاستخدام، يجب تهيئة المسجل // env_logger::init(); // أو خلفية أخرى info!("تم تشغيل التطبيق"); warn!("القرص ممتلئ بنسبة 90%"); error!("خطأ في الاتصال بقاعدة البيانات: {:?}", err);}


2. env_logger — البساطة والمرونة



الخلفية الأكثر شيوعًا لـ log. يتم الضبط من خلال متغير البيئة RUST_LOG. هذا هو الخيار المثالي للمشاريع الصغيرة والأدوات المساعدة.



التثبيت:

[dependencies]log = "0.4"env_logger = "0.11"


مثال مع التصفية حسب الوحدات:

use log::info;

fn main() { env_logger::init(); // قم بتشغيل: RUST_LOG=my_crate=info cargo run info!("ستظهر هذه الرسالة فقط لـ my_crate"); // RUST_LOG=warn — سيظهر فقط warn و error // RUST_LOG=debug — سيظهر كل شيء بما في ذلك debug}


متغير RUST_LOG يدعم عوامل تصفية معقدة:

  • RUST_LOG=info — مستوى info وما فوق
  • RUST_LOG=my_crate=debug,other_crate=warn — مستويات مختلفة لكريتات مختلفة
  • RUST_LOG=off — إيقاف تسجيل الدخول


3. log4rs — الضبط عبر YAML



إذا كنت بحاجة إلى تحكم متقدم — عدة ملحقات (ملف، وحدة تحكم، syslog)، تدوير السجلات، تنسيق — اختر log4rs. إنه مستوحى من Java Log4j.



مثال على ضبط log4rs.yaml:

refresh_rate: 30 seconds

appenders: stdout: kind: console encoder: pattern: "{d(%Y-%m-%d %H:%M:%S)} [{l}] {m}{n}" file: kind: file path: "app.log" encoder: pattern: "{d} {l} {M} - {m}{n}"

root: level: info appenders: - stdout

loggers: app::db: level: debug appenders: - file additive: false


التهيئة في الكود:

use log4rs;

fn main() { log4rs::init_file("log4rs.yaml", Default::default()).unwrap(); log::info!("تم ضبط تسجيل الدخول عبر YAML"); log::debug!("ستذهب هذه الرسالة إلى الملف فقط");}


الإمكانيات الرئيسية لـ log4rs:

  • تدوير السجلات حسب الحجم أو الوقت
  • ملحقات مختلفة لوحدات مختلفة
  • إعادة تحميل الضبط تلقائيًا
  • دعم تنسيق JSON


4. tracing — نهج حديث



مكتبة tracing من فريق Tokio ليست مجرد تسجيل دخول، بل نظام كامل لـ تشخيص التطبيقات. تدعم الأحداث المنظمة و النطاقات (span)، وهو مفيد بشكل خاص في التطبيقات غير المتزامنة.



مثال مع النطاقات:

use tracing::{in                    

توصيات