ASP.Net MVC অ্যাপ্লিকেশনগুলিতে ELMAH (Error Logging Modules and Handlers) এবং NLog দুটি শক্তিশালী টুল, যা Exception এবং Error Logging পরিচালনা করতে ব্যবহৃত হয়। ELMAH সাধারণত Exception লগ করে এবং একটি ওয়েব ভিত্তিক UI-এর মাধ্যমে লগ দেখা যায়। অন্যদিকে, NLog কনফিগারেশনের মাধ্যমে বিভিন্ন ডেস্টিনেশনে (ফাইল, ডাটাবেস, ইমেল ইত্যাদি) লগ পাঠাতে পারে।
ELMAH ব্যবহার করে লগিং
ELMAH ইন্সটল করা
- Visual Studio-তে NuGet Package Manager খুলুন।
ELMAH প্যাকেজ ইনস্টল করুন:
Install-Package elmah
ELMAH কনফিগারেশন
Web.config-এ ELMAH এর সেটিং যোগ করুন:
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
ELMAH এ অ্যাক্সেস
ডিফল্টভাবে ELMAH লগ UI দেখতে এই URL ব্যবহার করুন:
http://localhost/elmah.axd
ELMAH এর সুবিধা
- সমস্ত Exception স্বয়ংক্রিয়ভাবে লগ হয়।
- লগ ওয়েব ইন্টারফেসের মাধ্যমে দেখা যায়।
- Exception লগ ফাইল বা ডাটাবেসে সংরক্ষণ করা যায়।
NLog ব্যবহার করে লগিং
NLog ইন্সটল করা
- Visual Studio-তে NuGet Package Manager খুলুন।
NLog.Web.AspNetCore প্যাকেজ ইনস্টল করুন:
Install-Package NLog.Web.AspNetCore
NLog কনফিগারেশন
NLog.config ফাইল তৈরি করুন এবং এতে নিচের কনফিগারেশন যোগ করুন:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="Logs/logfile.log" layout="${longdate} ${level} ${message} ${exception}" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Error" writeTo="logconsole" />
</rules>
</nlog>
NLog ইন্টিগ্রেশন
Program.cs-এ NLog কনফিগার করুন:
using NLog.Web;
var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();
try
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
// Configure NLog
builder.Logging.ClearProviders();
builder.Logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
builder.Host.UseNLog();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
}
catch (Exception ex)
{
logger.Error(ex, "Application stopped because of an exception.");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
NLog ব্যবহার
কোনো নির্দিষ্ট ক্লাস বা কন্ট্রোলারে লগিং করতে:
using NLog;
public class HomeController : Controller
{
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
public IActionResult Index()
{
logger.Info("Index page loaded.");
try
{
throw new Exception("Test exception");
}
catch (Exception ex)
{
logger.Error(ex, "An error occurred in the Index action.");
}
return View();
}
}
ELMAH এবং NLog এর তুলনা
| বৈশিষ্ট্য | ELMAH | NLog |
|---|---|---|
| ব্যবহারিক ক্ষেত্র | Exception লগ এবং UI ভিত্তিক | Custom লগিং এবং ডেস্টিনেশন নির্ধারণ |
| লগ স্টোরেজ | ফাইল, ডাটাবেস | ফাইল, ডাটাবেস, ইমেল, ক্লাউড |
| কনফিগারেশন সহজতা | সহজ | কিছুটা জটিল |
| UI সাপোর্ট | হ্যাঁ | না |
| প্রধান ফোকাস | Exception Management | General Logging |
সারমর্ম
ELMAH এবং NLog উভয়ই শক্তিশালী লগিং টুল। ELMAH Exception লগ এবং UI-এর জন্য আদর্শ, যেখানে NLog কাস্টমাইজড লগিং এবং মাল্টিপল আউটপুট ডেস্টিনেশনের জন্য ব্যবহৃত হয়। বড় অ্যাপ্লিকেশনে উভয় টুল একসাথে ব্যবহার করে Exception এবং Custom লগিং ব্যবস্থাপনা আরও কার্যকর করা যায়।
Read more