ASP.NET Core অ্যাপ্লিকেশন ডেভেলপমেন্টে লগিং একটি গুরুত্বপূর্ণ অংশ, কারণ এটি অ্যাপ্লিকেশনের কার্যকারিতা মনিটর করতে এবং সমস্যা ডিবাগ করতে সাহায্য করে। ASP.NET Core তার মধ্যে বিল্ট-ইন লগিং ফিচার সরবরাহ করে, তবে আরও উন্নত ফিচারের জন্য থার্ড-পার্টি লগিং ফ্রেমওয়ার্কও ব্যবহার করা যায়। এই নিবন্ধে, আমরা ASP.NET Core এর বিল্ট-ইন লগিং এবং থার্ড-পার্টি লগিং ফ্রেমওয়ার্ক নিয়ে আলোচনা করব।
ASP.NET Core একটি বিল্ট-ইন লগিং ফ্রেমওয়ার্ক সরবরাহ করে যা সাধারণ লগিং কার্যক্রম, যেমন ইনফরমেশন লগিং, ডিবাগ লগিং, এবং এরর লগিং পরিচালনা করতে সক্ষম। এটি খুবই কার্যকর এবং সহজে কনফিগার করা যায়।
ASP.NET Core এর বিল্ট-ইন লগিং ফিচারটি ILogger ইন্টারফেস ব্যবহার করে কাজ করে। আপনি অ্যাপ্লিকেশনের বিভিন্ন অংশে ILogger
ব্যবহার করে লগ তৈরি করতে পারেন এবং সেই লগগুলো একটি কনসোল, ফাইল, বা ডেটাবেসে স্টোর করতে পারেন।
ASP.NET Core অ্যাপ্লিকেশনে লগিং কনফিগার করতে, Startup.cs ফাইলে লগিং সেটিংস কনফিগার করা হয়। অ্যাপ্লিকেশনের ডিফল্ট লগিং সিস্টেম Serilog বা NLog নয়, বরং Microsoft.Extensions.Logging লাইব্রেরি ব্যবহার করে।
Startup.cs ফাইলে লগিং কনফিগার করা:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(config =>
{
config.AddConsole(); // কনসোল লগিং সক্রিয় করা
config.AddDebug(); // ডিবাগ লগিং সক্রিয় করা
config.AddEventSourceLogger(); // ইভেন্ট লগিং সক্রিয় করা
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Application Started");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
}
}
এখানে, ILogger<Startup>
এর মাধ্যমে লগিং করা হয়েছে। আপনি বিভিন্ন স্তরের লগ (ইনফরমেশন, ওয়্যার্নিং, এরর) ব্যবহার করতে পারেন, যেমন:
logger.LogInformation("This is an info log");
logger.LogWarning("This is a warning log");
logger.LogError("This is an error log");
ASP.NET Core এর বিল্ট-ইন লগিং সিস্টেম বেশ কার্যকর হলেও, অনেক ডেভেলপার অতিরিক্ত ফিচারের জন্য থার্ড-পার্টি লগিং ফ্রেমওয়ার্ক ব্যবহার করতে পছন্দ করে। এদের মধ্যে সবচেয়ে জনপ্রিয় হলো Serilog, NLog, এবং log4net।
Serilog একটি আধুনিক এবং অত্যন্ত কনফিগারেবল লগিং ফ্রেমওয়ার্ক। এটি সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস লগিং সাপোর্ট করে এবং ডেটাবেস, ফাইল, এবং ক্লাউড সার্ভিসে লগ ডাটা পাঠানোর জন্য একটি দুর্দান্ত সমাধান।
Serilog এর ব্যবহার:
NuGet প্যাকেজ ইনস্টল:
dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File
Serilog কনফিগারেশন: Program.cs
ফাইলে Serilog কনফিগার করুন:
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog(); // Serilog ব্যবহার
}
Serilog এর মাধ্যমে আপনি সহজেই JSON ফরম্যাটে লগ করতে পারবেন এবং সেই লগগুলো বিভিন্ন সিস্টেমে পাঠাতে পারবেন যেমন Datadog, Elasticsearch, ইত্যাদি।
NLog একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী লগিং ফ্রেমওয়ার্ক যা ফাইল, ডেটাবেস, কনসোল, ইত্যাদি আউটপুট সমর্থন করে। NLog সাধারণত বৃহৎ অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়।
NLog এর ব্যবহার:
NuGet প্যাকেজ ইনস্টল:
dotnet add package NLog.Web.AspNetCore
dotnet add package NLog.Config
NLog কনফিগারেশন: Program.cs
ফাইলে NLog কনফিগার করুন:
public class Program
{
public static void Main(string[] args)
{
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
logger.Info("Application is starting");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
logger.Error(ex, "Stopped program because of an exception");
throw;
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.AddNLog();
});
}
NLog এর মাধ্যমে লগগুলোকে অনেক বেশি কাস্টমাইজ করা যায় এবং বিশেষত বৃহৎ অ্যাপ্লিকেশনগুলোতে এটি খুবই কার্যকরী।
log4net একটি জনপ্রিয় লগিং ফ্রেমওয়ার্ক যা দীর্ঘ সময় ধরে ব্যবহৃত হয়ে আসছে। এটি সহজে কনফিগারেবল এবং অনেক আউটপুট সাপোর্ট করে, যেমন ফাইল, ডেটাবেস, ইমেইল, ইত্যাদি।
log4net এর ব্যবহার:
NuGet প্যাকেজ ইনস্টল:
dotnet add package log4net
log4net কনফিগারেশন: log4net.config
ফাইল তৈরি করুন এবং লগ ফরম্যাট এবং আউটপুট কনফিগার করুন।
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="Logs/app.log"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
log4net কনফিগারেশন কোড: Program.cs
ফাইলে লগ4নেট ব্যবহার করে লগ কনফিগার করুন।
log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
ASP.NET Core-এ বিল্ট-ইন লগিং ফিচার বেশ কার্যকরী এবং সহজে কনফিগার করা যায়, তবে কিছু উন্নত লগিং ফিচারের জন্য আপনি থার্ড-পার্টি ফ্রেমওয়ার্ক ব্যবহার করতে পারেন। Serilog, NLog, এবং log4net থার্ড-পার্টি ফ্রেমওয়ার্কগুলো বিভিন্ন ধরনের আউটপুট সাপোর্ট করে এবং ডেভেলপারদের
আরও কাস্টমাইজড লগিং সুবিধা প্রদান করে। আপনার অ্যাপ্লিকেশনের চাহিদা অনুসারে আপনি এগুলোর মধ্যে একটি নির্বাচন করতে পারেন।
common.read_more