परिचय: लॉगिंग क्यों महत्वपूर्ण है?
\n\nकल्पना करें कि आपका C# एप्लिकेशन प्रोडक्शन में चल रहा है। अचानक उपयोगकर्ता एक त्रुटि की रिपोर्ट करते हैं, लेकिन आप समझ नहीं पाते कि क्या गलत हुआ। लॉग के बिना, आप बिना उपकरणों के पायलट की तरह हैं। लॉगिंग एप्लिकेशन के संचालन के बारे में जानकारी रिकॉर्ड करने की प्रक्रिया है: त्रुटियाँ, चेतावनियाँ, डीबग संदेश और प्रमुख घटनाएँ।
\n\nइस लेख में, हम C# (.NET) पर शुरुआती डेवलपर्स के लिए लॉगिंग के सर्वोत्तम अभ्यासों पर चर्चा करेंगे। आप सीखेंगे कि लॉगिंग कैसे सेट करें, कौन से टूल का उपयोग करें और सामान्य गलतियों से कैसे बचें।
\n\n1. C# में लॉगिंग के लिए टूल चुनना
\n\n.NET इकोसिस्टम में लॉगिंग के लिए कई लोकप्रिय लाइब्रेरी हैं। शुरुआती लोगों के लिए, हम तीन मुख्य विकल्प सुझाते हैं:
\n\n1.1. बिल्ट-इन ILogger (Microsoft.Extensions.Logging)
\n\n.NET Core से शुरू करते हुए, Microsoft बिल्ट-इन ILogger इंटरफ़ेस प्रदान करता है। इसका उपयोग करना आसान है और इसमें तृतीय-पक्ष लाइब्रेरी स्थापित करने की आवश्यकता नहीं है।
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\n1.2. Serilog — लचीला और शक्तिशाली
\n\nSerilog सबसे लोकप्रिय लाइब्रेरी में से एक है। यह संरचित लॉगिंग का समर्थन करता है, जिससे डेटा का विश्लेषण करना आसान हो जाता है। NuGet के माध्यम से स्थापित करें: Install-Package Serilog.AspNetCore
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\n1.3. NLog — क्लासिक विकल्प
\n\nNLog एक और परिपक्व लाइब्रेरी है जिसमें कॉन्फ़िगरेशन फ़ाइलों के माध्यम से व्यापक अनुकूलन क्षमताएँ हैं।
\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\n2. लॉगिंग स्तर: कब क्या उपयोग करें
\n\nलॉगिंग स्तरों का सही उपयोग अच्छे अभ्यास की नींव है। C# (.NET) में निम्नलिखित स्तर परिभाषित हैं (सबसे महत्वपूर्ण से कम से कम तक):
\n\n- \n
- Trace (0) — अत्यधिक विस्तृत डीबग जानकारी। केवल गहन निदान के लिए उपयोग किया जाता है। \n
- Debug (1) — डेवलपर्स के लिए डीबग संदेश। विकास वातावरण में सक्षम, लेकिन प्रोडक्शन में अक्षम। \n
- Information (2) — एप्लिकेशन संचालन के बारे में सामान्य सूचनात्मक संदेश (स्टार्टअप, सफल संचालन)। \n
- Warning (3) — संभावित समस्याओं के बारे में चेतावनियाँ जो त्रुटियाँ नहीं हैं (जैसे, निष्पादन समय सीमा से अधिक)। \n
- Error (4) — त्रुटियाँ जिन पर ध्यान देने की आवश्यकता है, लेकिन एप्लिकेशन के लिए घातक नहीं हैं। \n
- Critical (5) — गंभीर त्रुटियाँ, जिनके बाद एप्लिकेशन