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

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

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

ابدأ الدورة

مقدمة: لماذا يعتبر تسجيل الدخول مهمًا؟

\n\n

تخيل أن تطبيقك بلغة C# يعمل في بيئة الإنتاج. فجأة، يبلغ المستخدمون عن خطأ، لكنك لا تستطيع فهم ما حدث بشكل خاطئ. بدون سجلات، أنت كطيار بدون أدوات. تسجيل الدخول هو عملية تسجيل معلومات حول تشغيل التطبيق: الأخطاء، التحذيرات، رسائل التصحيح، والأحداث الرئيسية.

\n\n

في هذه المقالة، سنستعرض أفضل ممارسات تسجيل الدخول للمطورين المبتدئين في C# (.NET). ستتعلم كيفية إعداد تسجيل الدخول، وما هي الأدوات التي يجب استخدامها، وكيفية تجنب الأخطاء الشائعة.

\n\n

1. اختيار أداة تسجيل الدخول في C#

\n\n

في نظام .NET البيئي، توجد عدة مكتبات شائعة لتسجيل الدخول. للمبتدئين، نوصي بثلاثة خيارات رئيسية:

\n\n

1.1. ILogger المدمج (Microsoft.Extensions.Logging)

\n\n

بدءًا من .NET Core، توفر Microsoft واجهة مدمجة ILogger. إنها سهلة الاستخدام ولا تتطلب تثبيت مكتبات خارجية.

\n\n
using Microsoft.Extensions.Logging;\n\npublic class OrderService\n{\n    private readonly ILogger<OrderService> _logger;\n\n    public OrderService(ILogger<OrderService> logger)\n    {\n        _logger = logger;\n    }\n\n    public void ProcessOrder(int orderId)\n    {\n        _logger.LogInformation("معالجة الطلب {OrderId}", orderId);\n        // منطق المعالجة\n    }\n}
\n\n

1.2. Serilog — مرن وقوي

\n\n

Serilog هي واحدة من أشهر المكتبات. تدعم التسجيل المنظم، مما يسهل تحليل البيانات. التثبيت عبر NuGet: Install-Package Serilog.AspNetCore

\n\n
using Serilog;\n\npublic class Program\n{\n    public static void Main(string[] args)\n    {\n        Log.Logger = new LoggerConfiguration()\n            .MinimumLevel.Debug()\n            .WriteTo.Console()\n            .WriteTo.File("logs/app.log", rollingInterval: RollingInterval.Day)\n            .CreateLogger();\n\n        try\n        {\n            Log.Information("تم تشغيل التطبيق");\n            CreateHostBuilder(args).Build().Run();\n        }\n        catch (Exception ex)\n        {\n            Log.Fatal(ex, "التطبيق انتهى بخطأ");\n        }\n        finally\n        {\n            Log.CloseAndFlush();\n        }\n    }\n}
\n\n

1.3. NLog — الخيار الكلاسيكي

\n\n

NLog هي مكتبة ناضجة أخرى مع إمكانيات واسعة للتخصيص عبر ملفات التكوين.

\n\n
// الإعداد عبر appsettings.json\n{\n  "NLog": {\n    "targets": {\n      "console": {\n        "type": "Console",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      },\n      "file": {\n        "type": "File",\n        "fileName": "logs/app.log",\n        "layout": "${longdate}|${level:uppercase=true}|${message}"\n      }\n    },\n    "rules": [\n      { "logger": "*", "minLevel": "Info", "writeTo": "console,file" }\n    ]\n  }\n}
\n\n

2. مستويات تسجيل الدخول: متى تستخدم ماذا

\n\n

الاستخدام الصحيح لمستويات تسجيل الدخول هو أساس الممارسة الجيدة. في C# (.NET)، تم تعريف المستويات التالية (من الأكثر حرجًا إلى الأقل):

\n\n
    \n
  • Trace (0) — معلومات تصحيح مفصلة للغاية. يُستخدم فقط للتشخيص العميق.
  • \n
  • Debug (1) — رسائل تصحيح للمطورين. يتم تفعيلها في بيئة التطوير، ولكن يتم تعطيلها في الإنتاج.
  • \n
  • Information (2) — رسائل معلومات عامة حول تشغيل التطبيق (بدء التشغيل، العمليات الناجحة).
  • \n
  • Warning (3) — تحذيرات حول مشكلات محتملة ليست أخطاء (مثل تجاوز وقت التنفيذ).
  • \n
  • Error (4) — أخطاء تتطلب الانتباه، ولكنها ليست قاتلة للتطبيق.
  • \n
  • Critical (5) — أخطاء حرجة، بعدها يتعذر على التطبيق مواصلة العمل.
  • \n

المدونات

توصيات الكتب