Serilog का परिचय: यह क्या है और क्यों ज़रूरी है?
Serilog एक शक्तिशाली, लचीली और आधुनिक लाइब्रेरी है जो .NET इकोसिस्टम (C#, F#, VB.NET) में स्ट्रक्चर्ड लॉगिंग के लिए उपयोग की जाती है। पारंपरिक लॉगिंग फ्रेमवर्क (जैसे NLog या log4net) के विपरीत, जो सिर्फ फ्लैट टेक्स्ट मैसेज के साथ काम करते हैं, Serilog शुरू से ही स्ट्रक्चर्ड डेटा के साथ काम करने के लिए डिज़ाइन किया गया है।
Serilog की ज़रूरत क्यों है?
- स्ट्रक्चर्ड लॉगिंग: आप सिर्फ एक स्ट्रिंग नहीं, बल्कि नामित प्रॉपर्टी वाले ऑब्जेक्ट लॉग करते हैं। इससे Elasticsearch, Seq, Datadog जैसे सिस्टम में लॉग को फ़िल्टर, सर्च और एनालाइज़ करना आसान हो जाता है।
- लचीलापन (Sinks): Serilog "सिंक" (sinks) की अवधारणा का उपयोग करता है। आप लॉग को कंसोल, फ़ाइल, डेटाबेस, क्लाउड सर्विस (Azure, AWS), Elasticsearch, Telegram, Slack और सैकड़ों अन्य जगहों पर भेज सकते हैं — बस ज़रूरी पैकेज इंस्टॉल करके।
- परफॉरमेंस: Serilog हाई-लोड एप्लिकेशन के लिए ऑप्टिमाइज़ किया गया है। यह मैसेज टेम्पलेट का उपयोग करके लेज़ी फ़ॉर्मेटिंग करता है, जिससे अगर लॉगिंग लेवल एक्टिव नहीं है तो अनावश्यक मेमोरी एलोकेशन से बचा जा सकता है।
- आसान सेटअप: कोड या JSON फ़ाइल के माध्यम से कॉन्फ़िगरेशन। शुरू करने के लिए बस कुछ लाइनें काफी हैं।
- डायग्नोस्टिक्स: हर लॉग में कॉन्टेक्स्ट जानकारी (जैसे यूज़र ID, ऑर्डर नंबर, मेथड का नाम) आसानी से जोड़ी जा सकती है।
Serilog की स्थापना (Installation)
Serilog NuGet के माध्यम से वितरित किया जाता है — .NET के लिए पैकेज मैनेजर। इसे Package Manager Console या .NET CLI के ज़रिए इंस्टॉल किया जा सकता है।
.NET CLI के माध्यम से स्थापना (अनुशंसित):
dotnet add package Serilog
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File
dotnet add package Serilog.Settings.Configuration
dotnet add package Serilog.AspNetCore
Package Manager Console (Visual Studio) के माध्यम से स्थापना:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File
Install-Package Serilog.Settings.Configuration
Install-Package Serilog.AspNetCore
पैकेजों की व्याख्या:
- Serilog — लाइब्रेरी का मुख्य भाग (कोर)।
- Serilog.Sinks.Console — कंसोल में आउटपुट के लिए सिंक।
- Serilog.Sinks.File — फ़ाइलों में लिखने के लिए सिंक।
- Serilog.Settings.Configuration —
appsettings.jsonसे सेटिंग्स पढ़ने की अनुमति देता है। - Serilog.AspNetCore — ASP.NET Core के साथ एकीकरण (लॉग में HTTP-कॉन्टेक्स्ट जोड़ता है)।
PythonLib पाठकों के लिए नोट: Python में pip के माध्यम से इंस्टॉलेशन का एनालॉग pip install serilog है (लेकिन Serilog एक .NET लाइब्रेरी है; Python के लिए structlog जैसे अलग टूल हैं)।
त्वरित शुरुआत: 30 सेकंड में पहला लॉग
एक .NET कंसोल एप्लिकेशन बनाएं और Program.cs में निम्नलिखित कोड जोड़ें:
using Serilog;
// 1. Serilog सेटअप
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File("logs/myapp.log", rollingInterval: RollingInterval.Day)
.CreateLogger();
try
{
Log.Information("एप्लिकेशन सफलतापूर्वक शुरू हुआ।");
int userId = 42;
string userName = "राहुल";
Log.Information("यूज़र {UserId} जिसका नाम {UserName} है, ने लॉगिन किया।", userId, userName);
// एरर का उदाहरण
try
{
throw new InvalidOperationException("गलत ऑपरेशन");
}
catch (Exception ex)
{
Log.Error(ex, "यूज़र {UserId} के लिए ऑपरेशन करते समय त्रुटि हुई", userId);
}
Log.Warning("यह एक चेतावनी है। लेवल: {Level}", "Warning");
}
finally
{
// 2. महत्वपूर्ण: एप्लिकेशन बंद करने से पहले लॉगर को बंद करें