المقدمة
التسجيل والمراقبة من أهم الأدوات التي لازم تكون موجودة في أي تطبيق ويب حديث. ده بيساعدك على تتبع الأخطاء وتحليل أداء التطبيق بشكل مستمر، وبيخليك قادر تلاحظ أي مشاكل أو مناطق محتاجة تحسين في الوقت الحقيقي.
ما هو الـ Logging
الـ Logging هو عملية تتبع وتسجيل الأحداث التي تحدث في النظام أثناء تشغيل التطبيق. ممكن تكون الأحداث دي عبارة عن أخطاء، تحذيرات، أو حتى أحداث مهمة زي دخول المستخدمين للتطبيق أو تنفيذ عمليات معينة. السجلات دي بتساعدك في التعرف على أي مشاكل ممكن تحصل وتحليل أداء التطبيق بشكل أفضل.
في .NET Core، عملية الـ Logging بتتم بشكل سهل ومرن، وبتسمح لك بتسجيل بيانات مفيدة لمراقبة التطبيق وحل أي مشاكل قد تظهر.
كيفية إضافة الـ Logging في .NET
لتفعيل التسجيل في تطبيقك، لازم تبدأ بتكوين خدمة الـ Logging في مشروعك. وده بيتم من خلال الـ Startup.cs، وهو الملف المسؤول عن إعداد خدمات التطبيق.
إعداد الـ Logger في Startup.cs:
أول خطوة هي أنك تضيف خدمة الـ Logging داخل ConfigureServices في ملف Startup.cs. دي خطوة أساسية عشان تقدر تستخدم الـ Logger في جميع أجزاء التطبيق:
public void ConfigureServices(IServiceCollection services) {
// إضافة خدمة الـ Logging
services.AddLogging();
الخطوة دي بتخلي التطبيق جاهز لاستخدام الـ Logger في أي مكان داخل التطبيق.
استخدام الـ Logger في الـ Controller
بعد ما تكون قدّمت خدمة الـ Logging في التطبيق، تقدر تستخدمها في أي Controller عاوز تسجل فيه الأحداث. بيكون عندك الـ ILogger كـ خدمة معتمدة (Dependency) اللي تقدر تستخدمها لتسجيل أي أحداث داخل التطبيق.
مثال على استخدام الـ Logger في الـ Controller:
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger) {
_logger = logger;
}
public IActionResult Index() {
_logger.LogInformation("User visited the homepage.");
return View();
}
هنا، احنا استخدمنا الـ ILogger داخل HomeController لتسجيل حدث لما المستخدم يزور الصفحة الرئيسية. بنستخدم LogInformation لتسجيل رسالة معلوماتية عن زيارة الصفحة. ده بيساعدك تتابع متى وأين تمت الزيارة.
الـ ILogger بيقدم لك أنواع متعددة من الرسائل زي
LogInformation: لتسجيل المعلومات العادية.
LogWarning: لتسجيل التحذيرات.
LogError: لتسجيل الأخطاء.
LogCritical: لتسجيل الأحداث الحرجة.
الرسائل دي بتكون مفيدة لما تجي تتعقب الأخطاء أو تعمل تحليل للأداء.
فوائد الـ Logging
الـ Logging مش بس بيخليك تتبع الأخطاء، لكن ليه فوائد تانية كتير زي:
1. تحليل الأخطاء:
الـ Logging بيساعدك تتبع الأخطاء بشكل دقيق. لما يحدث خطأ في التطبيق، تقدر من السجلات تشوف الرسالة المرتبطة بالخطأ، والمكان اللي حصل فيه، وزمان حدوثه. ده بيسهل عليك تصحيح الأخطاء بشكل أسرع.
مثال: لو في خطأ في عملية دخول المستخدم، ممكن يكون في خطأ في الـ Model أو Controller، وتقدر تستخدم الـ Logger لتسجيل تفاصيل الخطأ.
try {
// عملية الدخول
} catch (Exception ex) {
_logger.LogError($"Error occurred while user login: {ex.Message}");
2. تحسين الأداء:
عن طريق الـ Logging، تقدر تتابع أداء التطبيق بشكل مستمر. ممكن تسجل وقت بداية وانتهاء العمليات المختلفة، وده هيساعدك تكتشف أي جزء في التطبيق بيأخذ وقت طويل وعايز تحسين.
مثلاً، لو عندك دالة بتنفذ استعلامات في قاعدة البيانات، ممكن تستخدم الـ Logger لتسجيل وقت البداية والنهاية للعملية دي.
_logger.LogInformation("Start database query execution.");
// تنفيذ الاستعلام
_logger.LogInformation("End database query execution.");
ده هيساعدك تقيم الأداء وتحسن الأجزاء البطيئة.
3. تحسين الأمان:
الـ Logging مش بس عن الأخطاء أو الأداء، لكنه كمان بيكون أداة مهمة لتحسين الأمان. من خلال السجلات، تقدر تكتشف محاولات الاختراق أو الأنشطة المشبوهة في التطبيق.
مثلاً، لو في محاولة تسجيل دخول فاشلة أكثر من مرة، ممكن تسجل الحدث ده وتتابعه عشان تتأكد من وجود أي محاولة اختراق.
if (loginAttempts > 3) {
_logger.LogWarning($"Multiple failed login attempts for user {username}.");
}
4. تحسين المراقبة:
لما يكون عندك أكثر من بيئة تشغيل (مثل بيئة التطوير، والاختبار، والإنتاج)، بتحتاج تتابع كل شيء من خلال Logging. تقدر تبني تقارير وتحليلات عن طريق الـ Logs لمعرفة كيف الأداء في كل بيئة على حدة.
مثال: لو عندك خدمة على السحابة (Cloud)، تقدر تستخدم أدوات المراقبة المرتبطة بـ Logging زي Azure Application Insights أو Elasticsearch لتحليل السجلات.
أفضل الممارسات في استخدام الـ Logging
استخدام مستويات متعددة للـ Logging: لازم تستخدم أنواع مختلفة من السجلات زي LogInformation، LogWarning، و LogError حسب الحاجة. مش كل حدث يستحق أن يتسجل كـ خطأ.
تجنب تسجيل معلومات حساسة: لازم تتجنب تسجيل معلومات حساسة زي كلمات السر أو بيانات بطاقات الائتمان في السجلات. لازم تتأكد أن السجلات مش هتسجل معلومات بتضر أمان التطبيق.
استخدام خدمات خارجية للمراقبة: لو التطبيق معقد وبيشتغل على أكثر من خادم أو بيئة، لازم تفكر في استخدام خدمات للمراقبة زي Serilog، NLog، أو أدوات السحابة زي Azure Monitor أو AWS CloudWatch.
تسجيل الأخطاء الحرجة فقط في بيئة الإنتاج: في بيئة الإنتاج، حاول تسجل فقط الأخطاء المهمة أو الحرجة، عشان متعملش ازدحام في السجلات وبيانات غير ضرورية.
في الختام
الـ Logging في .NET هو عنصر أساسي يساعدك في متابعة التطبيق وحل المشكلات بشكل أسرع. سواء كان في تتبع الأخطاء أو مراقبة الأداء أو تحسين الأمان، الـ Logging هو أداة لا غنى عنها في أي تطبيق ويب حديث. لما تستخدمه بشكل جيد، هتقدر تضمن أداء مستقر وتكتشف أي مشاكل قبل ما تؤثر على تجربة المستخدم.
Discussion