تسجيل الدخول في تطبيقات Rust: أفضل الممارسات للمبتدئين

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

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

ابدأ الدورة

مقدمة في تسجيل الدخول في Rust



تسجيل الدخول (التدوين) هو عملية تسجيل معلومات حول تشغيل البرنامج. بالنسبة للمطورين المبتدئين في Rust، قد يبدو تسجيل الدخول أمرًا معقدًا، لكنه في الواقع أحد أقوى أدوات التصحيح والمراقبة. في هذه المقالة، سنستعرض أفضل ممارسات تسجيل الدخول في Rust التي ستساعدك في كتابة تطبيقات أكثر موثوقية وقابلية للصيانة.



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



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



في Rust، المعيار الفعلي لتسجيل الدخول هو كريت log. يوفر واجهة مجردة لا تعتمد على تنفيذ محدد. هذا يعني أنه يمكنك كتابة الكود باستخدام وحدات الماكرو من log، ثم التبديل بين أنظمة خلفية مختلفة (مثل env_logger أو log4rs أو slog) دون تغيير الكود الأساسي.



التثبيت والإعداد



أضف التبعية إلى ملف Cargo.toml الخاص بك:



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


الآن يمكنك استخدام وحدات الماكرو لتسجيل الدخول في الكود الخاص بك. إليك مثال بسيط:



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

fn main() { // تهيئة المسجل env_logger::init();

let user = "أليكسي"; let age = 25;

info!("تم تشغيل التطبيق"); warn!("المستخدم {} عمره {}، يرجى التحقق من البيانات", user, age); error!("فشل الاتصال بقاعدة البيانات");

println!("تم إنهاء البرنامج");}


هام: بدون استدعاء env_logger::init()، لن تقوم وحدات الماكرو log بإخراج أي شيء. يجب أن يتم التهيئة مرة واحدة في بداية البرنامج.



مستويات تسجيل الدخول



يدعم كريت log خمسة مستويات لتسجيل الدخول (من الأكثر أهمية إلى الأقل أهمية):



  • error! — أخطاء حرجة تتطلب اهتمامًا فوريًا. استخدمها في الحالات التي لا يمكن للبرنامج فيها مواصلة العمل.
  • warn! — تحذيرات. حدث خطأ ما، لكن البرنامج يمكنه مواصلة العمل (مثل API قديم أو قيمة غير متوقعة).
  • info! — معلومات عامة حول سير تنفيذ البرنامج. مفيدة لتتبع الأحداث الرئيسية (البدء، الإنهاء، التحولات الهامة).
  • debug! — معلومات تصحيح الأخطاء. تُستخدم أثناء التطوير للتحليل التفصيلي.
  • trace! — المستوى الأكثر تفصيلاً. يسجل كل خطوة من خطوات التنفيذ. استخدمه بحذر - قد يسبب ازدحامًا في المخرجات.


يتم التصفية حسب المستوى تلقائيًا. بشكل افتراضي، يقوم env_logger بإخراج جميع الرسائل بمستوى error و warn و info. يمكنك تغيير ذلك بسهولة باستخدام متغير البيئة RUST_LOG:



# عرض الأخطاء فقطRUST_LOG=error cargo run

# عرض كل شيء بما في ذلك traceRUST_LOG=trace cargo run

# عرض فقط لوحدة معينةRUST_LOG=my_module=debug cargo run


2. تسجيل الدخول العملي: السجلات المنظمة



تسجيل الدخول البسيط للنصوص أمر جيد، لكن لأنظمة الإنتاج من الأفضل استخدام السجلات المنظمة. بدلاً من كتابة "المستخدم أليكسي دخل إلى النظام"، يمكنك تسجيل كائن JSON يحتوي على حقول event و user و timestamp. هذا يبسط تحليل السجلات باستخدام أدوات مثل Elasticsearch أو Grafana.



استخد

المدونات

توصيات الكتب