تسجيل الدخول لـ 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